如何使用正则表达式使用jQuery通过ID选择元素?

57 javascript regex jquery

我有以下输入元素:

<input id="AAA_RandomString_BBB" type="text" />
<input id="AAA_RandomString_BBB_Start" type="text" />
<input id="AAA_RandomString_BBB_End" type="text" />
Run Code Online (Sandbox Code Playgroud)

AAA和BBB是常数,我将永远知道它们是什么.但是RandomString总是随机的.

我想获得AAA_RandomString_BBB的值.我不希望输入元素的值以_Start或_End结尾的ID结尾.

我尝试了以下内容:

$('[id^="AAA_"]')
Run Code Online (Sandbox Code Playgroud)

但是上面选择了所有ID为"AAA_"的输入元素

我需要一些方法来选择使用正则表达式类型语法,如:

$('[id^="AAA_(.+?)_BBB"]')
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果没有,任何人都可以提出一种选择方法

Ale*_*der 123

您可以在多属性选择器中组合两个选择.

?$("[id^=AAA_][id$=_BBB]")
Run Code Online (Sandbox Code Playgroud)

它将返回与所有指定属性过滤器匹配的所有元素:

  • [id^=AAA_]匹配具有idAAA_,和开头的属性的元素
  • [id$=_BBB]匹配id属性以_BBB.结尾的元素.

另一种通用替代品


Pra*_*man 14

用这个:

$('[id^="AAA_"][id$="_BBB"]')
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/J6hGx/


Var*_*hra 7

您可以查找id的开头AAABBB以此结尾:

?$("[id^=AAA_][id$=_BBB]")
Run Code Online (Sandbox Code Playgroud)

工作小提琴:http://jsfiddle.net/DN9uV/


bei*_*wel 7

这可以这样做:

$('input').filter(function(){ return this.id.match(/^AAA_.+_BBB$/) })
Run Code Online (Sandbox Code Playgroud)

您可以使用它$('input', <context>)来使搜索更精确.另见这里