你怎么看这个JavaScript正则表达式?

5 javascript regex

var pattern = /^0+$/;
Run Code Online (Sandbox Code Playgroud)

我的猜测是这样的:

"看看字符串的开头和结尾,如果在开头和结尾有一个或多个零的模式,那么返回该模式."

我确定这是错的,因为当我用这个字符串运行表达式时:

var string = "0000009000000";
Run Code Online (Sandbox Code Playgroud)

它出现了null.

那是什么意思呢?虽然我在问,JavaScript是什么/如何考虑字符串的开头,中间和结尾?

更新#1:感谢您的回复!我想我现在明白了.我的困惑源于我将字符串可视化为具有开头,中间和结尾的事实.像这样:

[开始] [中间] [end]的

换句话说,对于上面给定的字符串,以下表达式可以正常工作:

/^0+/; 返回"000000"(字符串开头的一个或多个零的模式)

/0+$/; 返回"000000"(字符串末尾的一个或多个零的模式)

更新#2:我对这一点的所有回复进行了投票,因为它们都很有用,我把答案编成了一个很大的答案:

给出以下JavaScript代码:

var string = "0000009000000";
var regExp = /^0+$/; 
alert(regExp.exec(string));
Run Code Online (Sandbox Code Playgroud)

它的部分内容如下:

"如果^修饰符后面跟着正则表达式中$修饰符的确切字符不是同时位于字符串的第一个位置和字符串的最后位置(即,它们不是字符串中唯一的字符),然后返回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返回a.

bil*_*dev 10

它说你的字符串只包含0 ...它必须开始,然后有1或更多0,然后结束.


CMS*_*CMS 7

^ 0 + $

  • 在字符串«^»的开头断言位置
  • 匹配字符"0"字面上"0+"
    • 在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)«+»
  • 断言字符串末尾的位置(或在字符串末尾的换行符之前,如果有的话)«$»