var pattern = /^0+$/;
我猜测的是:
“查看字符串的开头和结尾,如果开头和结尾有一个或多个零的模式,则返回该模式。”
但我确信这是错误的,因为当我使用以下字符串运行表达式时:
var string = "0000009000000";
它返回了null
。
那么它真正想表达的是什么?顺便问一下,JavaScript如何考虑字符串的开头、中间和结尾?
更新#1:感谢您的回复!我现在明白了。我的困惑源于我将字符串视为具有开头、中间和结尾。就像这样:
[开头][中间][结尾]
换句话说,对于给定的字符串,以下表达式按照我预期的方式工作:
/^0+/;
返回“000000”(一个或多个零的模式位于字符串的开头)
和
/0+$/
; 返回“000000”(一个或多个零的模式位于字符串的结尾)
更新#2:我赞同到目前为止所有的回答,因为它们都很有帮助,我将这些答案编写成一个伟大的整体:
给定以下JavaScript代码:
var string = "0000009000000";
var regExp = /^0+$/;
alert(regExp.exec(string));
以下是部分内容:
“如果正则表达式中的$修饰符之前以及^修饰符之后的确切字符在字符串的第一个位置和最后一个位置上都没有同时出现(即它们不是字符串中唯一的字符),则返回null
。否则,返回这些字符。”
换句话说,假设给定的字符串是六个零“000000”。这将导致匹配,因为完全相同的“0”字符组坐落在字符串的第一个位置(第1、2、3 4、5、6)和最后位置(1、2、3 第4、5、6)。
然而,在原始字符串中,有六个零,后面跟着一个九,再后面是六个零(“0000009000000”)。现在,字符串的第一个位置(第1、2、3、4、5、6个)中的六个零与字符串的最后位置(第8、9、10、11、12、13个)中的完全相同的六个零不一样。因此,返回null
。