if(this.id.match(/ ^ None _ + \ d + _ + \ d + $ /))中的错误是什么

时间:2011-06-27 11:59:24

标签: jquery regex

您好我写了一个正则表达式来匹配像

这样的模式
"None_123_234"  

以下是我的代码

if(this.id.match(/^None_+\d+_+\d+$/))  

但它不起作用。我们可以用其他任何方式编写它吗?请有人帮助我。

2 个答案:

答案 0 :(得分:4)

它不起作用,因为它不符合:

"None_123_234"

这是因为插入符号^,它将断言匹配是从字符串的开头完成的。在这种情况下,字符串的开头是双引号"。此外,美元符号$将断言该模式一直持续到字符串结束。在这种情况下,字符串的结尾也是双引号"

这是你给出的正则表达式(/^None_+\d+_+\d+$/)的确切解释:

  
      
  1. 在字符串«^»
  2. 的开头处断言位置   
  3. 将字符“无”字面匹配为“无”
  4.   
  5. 将字符“_”按字面匹配«_ +»

         

    一个。在一次和无限次之间,   尽可能多次回馈   根据需要(贪婪)«+»

  6.   
  7. 匹配单个数字0..9«\ d +»

         

    一个。在一次和无限次之间,   尽可能多次回馈   根据需要(贪婪)«+»

  8.   
  9. 将字符“_”按字面匹配«_ +»

         

    一个。在一次和无限次之间,   尽可能多次回馈   根据需要(贪婪)«+»

  10.   
  11. 匹配单个数字0..9«\ d +»

         

    一个。在一次和无限次之间,   尽可能多次回馈   根据需要(贪婪)«+»

  12.   
  13. 断言字符串末尾的位置(或换行符之前的位置)   字符串的结尾,如果有的话)«$»
  14.   

您有两种选择:

  1. 您的字符串不应该以{{1​​}} ...
  2. 以外的任何其他字符串开头
  3. 或者,您应该更改正则表达式以匹配文本中任何位置的模式,如下所示:
  4. None_

答案 1 :(得分:1)

很难从你给出的代码中说出问题是什么,但我的猜测是它与正则表达式无关。

正则表达式本身可以与None_123_234匹配。

我的猜测是你遇到了this.id的问题。正如我所说的,如果没有看到更多的代码,很难确定,因为我们不知道在你给我们的一行代码的上下文中this是什么样的。

但是,我认为你已经将放在标签中作为线索,因为你给我们的代码根本没有JQuery。

如果this是DOM元素,那么它将具有.id属性。但是,如果它是一个JQuery元素,那么它将不会 - this.id将被定义。

如果是这种情况,您可以使用JQuery .attr()方法来获取ID,如下所示:

if(this.attr('id').match(/^None_+\d+_+\d+$/))  

希望有所帮助。