一个JavaScript正则表达式的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:52:09
phoneNumberCheck=new RegExp("^[0-9]{8}|[0-9]{11}$");
phoneNumberCheckResult=phoneNumberCheck.test(123456789)
为什么输出的结果是TRUE啊
我希望的是匹配一个8位或者11位的电话号码
不是啊~~如果只有("^[0-9]{8}$");当输入八位以下数字或八位以上数字时都是FALSE
但用("^[0-9]{8}|[0-9]{11}$");只要输入八位以上就都是TRUE了
为什么?

你的正则表达式的意思是匹配开头是8位数字或结尾是11位数字的串
当然正确了

把^和$去了

你要注意,第二个你用了一个或者(|),或的运算优先级最低,也就是说程序会分别匹配^[0-9]{8}和[0-9]{11}$,而不是匹配^[0-9]{8}$,而^[0-9]{8}是表示行首8位数字,^[0-9]{8}$表示整个串是8位数字

肯定是true呀,因为你输入的内容符合正则,如果不符合的话就是false,所以返回只有两种,true 和 false ,是bool型的。
你可以改改

function test(value){
phoneNumberCheck=new RegExp("^[0-9]{8}|[0-9]{11}$");
phoneNumberCheckResult=phoneNumberCheck.test(value);
if(phoneNumberCheckResult)
return value;
else
return "";
}
value就是你要严重的字符串,如果字符串符合规律就返回这个字符串,如果不符合规律,就返回"";

phoneNumberCheck=new RegExp("^[0-9]{7}[0-9]{1}$|^[0-9]{10}[0-9]{1}$");
phoneNumberCheckResult=phoneNumberCheck.test(12345678901)
alert(phoneNumberCheckResult);

("^[0-9]{8}|[0-9]{11}$");改成
"^[0-9]{8}$|^[0-9]{11}$"
就可以了。