Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
js与java正则表达式的差异_Java_Javascript_Regex - Fatal编程技术网

js与java正则表达式的差异

js与java正则表达式的差异,java,javascript,regex,Java,Javascript,Regex,我有以下正则表达式来测试手机号码:/^1[0-9]{10}|[0-9]{8}$/。 如果我有字符串“123456789”,我用Java测试它,结果是false;但在JavaScript中,结果是正确的。有人能告诉我原因吗?在Java中,您可能正在使用match。诸如此类;我对Java不是很熟悉。无论如何,其主要思想是该方法只检查字符串开头的匹配项。正则表达式匹配以1开头的字符串和10个以上的数字,或者匹配以8个数字结尾的字符串123456789两者都不是。在JavaScript中,String.

我有以下正则表达式来测试手机号码:
/^1[0-9]{10}|[0-9]{8}$/

如果我有字符串
“123456789”
,我用Java测试它,结果是false;但在JavaScript中,结果是正确的。有人能告诉我原因吗?

在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将很难与此相匹配,这是更严格的限制。我不确定你的意图是什么,但它就是不起作用:

  • +12(345)678‒9中缺少三位数字___
  • +1(234)567‒89中缺少两位数字__
  • (123)456‒789中缺少一位数字
  • 123‒4567 | 89中的数字过多两位

不过,我对其他国家的电话号码格式了解不多。

我不相信Java测试的结果是错误的。正则表达式说,“一个'1'后跟10位或8位。@Pointy,如果是
/^1([0-9]{10}.[0-9]{8}$/
,这种匹配不是像
/^(1[0-9]{10})吗?”|[0-9]{8})$/
?我没有试着在java Btwa中运行它,实际上,它说的是一个
1
,后面跟着10位数字或其他数字,或者是一个以8结尾的字符串digits@minitech是的,你是对的。重点是,它匹配搜索字符串。是的,我需要javaScript的结果是假的。但它是真的。你是对的,非常感谢much@chaser:然后使用一个组,确切地说是l请参阅提供的示例。