我有以下Regex来测试手机号码:/^1[0-9]{10}|[0-9]{8}$/
。
如果我有字符串"123456789"
,我用Java测试它,结果是假的;但在JavaScript中,结果是正确的。任何人都可以告诉我原因吗?
答案 0 :(得分:0)
在Java中,您可能正在使用match
。像这样的东西;我对Java并不熟悉。无论如何,主要的想法是该方法只检查字符串的开头的匹配。正则表达式匹配以1
开头的字符串和10个以上的数字,或者以8位数字结尾的字符串; 123456789
既不是。在JavaScript中,String.prototype.match
,RegExp.prototype.exec
和RegExp.prototype.test
中的所有三个都会在任何地方进行检查。
我认为你的意思是:
/^(1[0-9]{10}|[0-9]{8})$/
但仍错误; 123456789几乎不会匹配,这是更严格的。我不确定你的意图是什么,但它不起作用:
但我不太了解其他国家的电话号码格式。