JS(jQuery) - 如果条件 - 任何数字

时间:2013-07-05 13:22:39

标签: javascript regex conditional-statements any digit

我正在尝试实现以下目标:我有一个元素,并且所有元素都可以分配给它们(有些具有“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}

或用[0-9]替换/ d。 A已经对这个正则表达式进行了相当多的研究,但是没有发现任何适合它的工作。 是否有任何优选的正则表达方式(或类似)或任何替代我的问题?

谢谢

3 个答案:

答案 0 :(得分:2)

JavaScript具有正则表达式文字,您需要使用test method

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

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

答案 1 :(得分:2)

我建议这个正则表达式:

/(^|\s)a\d/

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

所以:

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

请注意,您不会像使用代码中的==一样对正则表达式进行测试。您使用regex methods之类的.test()

正则表达式本身是作为正则表达式文字创建的,你将表达式放在两个正斜杠之间,如下所示:

/(^|\s)a\d/

或者作为传递给new RegExp()的字符串,如:

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

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

答案 2 :(得分:0)

if ( element.prop('class')[0]=='a' && !isNaN(element.prop('class').substring(1)) )

我想,可能比任何正则表达式

更快