js和java之间正则表达式的区别

时间:2014-01-16 02:03:40

标签: java javascript regex

我有以下Regex来测试手机号码:/^1[0-9]{10}|[0-9]{8}$/。 如果我有字符串"123456789",我用Java测试它,结果是假的;但在JavaScript中,结果是正确的。任何人都可以告诉我原因吗?

1 个答案:

答案 0 :(得分:0)

在Java中,您可能正在使用match。像这样的东西;我对Java并不熟悉。无论如何,主要的想法是该方法只检查字符串的开头的匹配。正则表达式匹配以1开头的字符串和10个以上的数字,或者以8位数字结尾的字符串; 123456789既不是。在JavaScript中,String.prototype.matchRegExp.prototype.execRegExp.prototype.test中的所有三个都会在任何地方进行检查。

我认为你的意思是:

/^(1[0-9]{10}|[0-9]{8})$/

错误; 123456789几乎不会匹配,这是更严格的。我不确定你的意图是什么,但它不起作用:

  • +12(345)678-9 ___
  • 中的三个缺失数字
  • +1(234)567-89 __
  • 中的两个缺失数字
  • (123)456-789
  • 中的一个缺失数字
  • 123-4567 |中有两位数字89

但我不太了解其他国家的电话号码格式。

相关问题