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

JS (jQuery) - If condition - any digit

本文关键字:条件 任意 数字 如果 JS jQuery      更新时间:2023-09-26

我正在努力实现以下目标:我有一个元素,所有元素都可以被分配类(有些元素有"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对这个正则表达式做了一些研究,但没有发现任何合适的,也不起作用。对于我的问题,有没有更好的Regex方式(或类似方式)或任何替代方案?

感谢

JavaScript有正则表达式文字,并且您希望使用test方法:

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

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

我建议使用以下正则表达式:

/(^|'s)a'd/

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

因此:

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

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

regex本身被创建为regex文本,将表达式放在两个斜杠之间,如下所示:

/(^|'s)a'd/

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

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

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

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

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