JS中字母和数字的问题

JavaScript014

JS中字母和数字的问题,第1张

改成这样应该就可以了:

abc="121323aaa"

response.write "<SCRIPT language=javascript>parent.form1.t.value='"&abc&"'<script>"

注意多了两个单引号

原因是:前者的字符串中含有字母,而且并未被单引号括起来,于是浏览器把字符串值当做变量来处理,而在你的页面上,并没有名为121323aaa的变量。由于js是一种很宽松的语言,于是浏览器认为你临时定义了变量121323aaa,并将121323aaa的值设为空字符串。

这样做:

function mySorter(a, b){

    if (/^\d/.test(a) ^ /^\D/.test(b)) return a>b?1:(a==b?0:-1)

    return a>b?-1:(a==b?0:1)

}

var pyArray=["a","d","fa","5","t","fw2","a31","b","e","2fs","4","0"]

alert(pyArray.sort(mySorter))

问题分析:

在JavaScript脚本语言中判断一个字符串中是否即包含数字亦包含字母,可以使用正则(RegExp对象)的方式,如果仅仅只是做判断,要求返回true或者false的话,那么使用RegExp对象的test方法即可。

举例如下:

//定义字符串

var str1 = '123' //第一个字符串,仅有数字。

var str2 = 'abc' //第二个字符串,仅有字母。

var str3 = 'a1b2c3' //第三个字符串,既有数字亦有字母。

//定义验证规则,由于字符串数字和字母的顺序可能不同。

//也有可能字母和数字中间还包含了其他字符。故将验证规则分开定义。

var regNumber = /\d+/ //验证0-9的任意数字最少出现1次。

var regString = /[a-zA-Z]+/ //验证大小写26个字母任意字母最少出现1次。

//验证第一个字符串

if (regNumber.test(str1) && regString.test(str1)) {

    console.log('str1:验证成功')

}else{

    console.log('str1:验证失败')

}

//验证第二个字符串

if (regNumber.test(str2) && regString.test(str2)) {

    console.log('str2:验证成功')

}else{

    console.log('str2:验证失败')

}

//验证第三个字符串

if (regNumber.test(str3) && regString.test(str3)) {

    console.log('str3:验证成功')

}else{

    console.log('str3:验证失败')

}

运行结果:

总结:

由于第一个字符串仅有数字,第二个字符串仅有字母,都不符合数字和字母都必须存在的需求,所以执行结果是“验证失败”,而第三个字符串,既包含字母亦包含数字,所以执行结果是“验证成功”。