1

我正在尝试实现以下目标:我有一个元素,并且所有元素都可以分配给它们的类(有些具有“a1”,有些具有“a2”,“a3”......或者它们可以没有类) . 如果我正在处理任何“a*”类元素或非“a*”类元素,我需要检查(条件)。明显的方法是:

if (element.prop('class')=='a1' || element.prop('class')=='a2' ||...){ // some action}

但是由于不同的“a”类的数量是动态的并且可以达到很高的数量,所以我想测试一下这样的东西

if (element.prop('class')=='a\d'){ // some action}

或将 /d 替换为 [0-9]。A 已经对这个正则表达式进行了相当多的研究,但没有找到任何合适的方法。是否有任何最好的正则表达式方式(或类似方式)或任何替代我的问题?

谢谢

4

3 回答 3

2

我建议这个正则表达式:

/(^|\s)a\d/

因为它a在字符串的开头或空格之后查找 ,所以它适用于元素指定了多个类的情况,例如class="b2 a1",但不接受在 之前具有其他字母的类名a,例如class="ha1"

所以:

if (/(^|\s)a\d/.test(element.prop('class')) {

请注意,您不会==像在代码中那样使用正则表达式进行测试。您使用正则表达式方法,例如.test().

并且正则表达式本身被创建为正则表达式文字,您将表达式放在两个正斜杠之间,如下所示:

/(^|\s)a\d/

或者作为你传递给new RegExp()喜欢的字符串:

new RegExp('(^|\\s)a\\d')

...但是用字符串做这件事更麻烦,因为你必须转义字符串中的任何反斜杠(注意在我的例子中它们加倍了?),所以我只会在用变量构建正则表达式时这样做,例如当它需要包含用户输入的数据时。

于 2013-07-05T13:33:53.107 回答
2

JavaScript 有正则表达式文字,你会想使用test方法

if (/a\d/.test(element.attr('class'))) { 
    // some action
}

旁注:class是 HTML 属性,而不是节点属性(使用attrnot prop

于 2013-07-05T13:28:20.243 回答
0
if ( element.prop('class')[0]=='a' && !isNaN(element.prop('class').substring(1)) )

我猜可能比任何正则表达式都快

于 2013-07-05T13:29:00.457 回答