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

IT技术 javascript jquery regex
2021-03-14 07:56:39

我有以下输入元素:

<input id="AAA_RandomString_BBB" type="text" />
<input id="AAA_RandomString_BBB_Start" type="text" />
<input id="AAA_RandomString_BBB_End" type="text" />

AAA 和 BBB 是常数,我将永远知道它们是什么。然而 RandomString 将始终是随机的。

我想获取 AAA_RandomString_BBB 的值。我不想要 ID 以 _Start 或 _End 结尾的输入元素的值。

我尝试了以下内容:

$('[id^="AAA_"]')

但是上面选择了所有ID以“AAA_”开头的输入元素

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

$('[id^="AAA_(.+?)_BBB"]')

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

6个回答

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

​$("[id^=AAA_][id$=_BBB]")

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

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

另一个通用替代方案:

用这个:

$('[id^="AAA_"][id$="_BBB"]')

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

您可以像这样查找 id 的开头AAA和结尾BBB

​$("[id^=AAA_][id$=_BBB]")

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

这可以像这样完成:

$('input').filter(function(){ return this.id.match(/^AAA_.+_BBB$/) })

您可以使用$('input', <context>)使搜索更精确。另见此处

最好通过以下方式检查以 _BBB 结尾的 ID

 $("[id$=_BBB]")