gpt4 book ai didi

javascript - jquery 在 select 中循环项目时转义特殊字符

转载 作者:行者123 更新时间:2023-12-03 07:21:30 25 4
gpt4 key购买 nike

您能帮我解决以下特殊字符问题吗?我有一个值要检查选择下拉列表并将其删除。但是您选择的文本中有特殊字符,所以有些它不起作用。请帮忙。

selArray = ['option (1)']
$('selArray').each(function(index, item) {
$('#sel option[value="+item+"]').remove()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>

最佳答案

我想我有一个适合你的解决方案。我所做的就是使用 Array.join 将您的 selArray 减少为字符串,然后使用 String.replace 使用反斜杠转义特殊字符(这是正则表达式的约定) ,然后使用正则表达式检查它是否与当前相关选择元素的值匹配。

查看我的代码:

selArray=['option (1)']
$('#sel option').each(function(){
var test = selArray.join('|').replace(/\(|\)/gi, '\\$&')
var re = new RegExp(test, 'i')
if(re.test($(this).val())) $('#sel option[value="' + $(this).val() + '"]').remove()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>

行中:

var test = selArray.join('|').replace(/\(|\)/gi, '\\$&')

正则表达式 /\(|\)/gi/ 查找左括号或右括号的每个实例。替换正则表达式 \\$& 本质上是在每个匹配之前放置一个反斜杠。如果您不熟悉正则表达式,我建议 RegExr ,这是一个非常有用的资源。

这一行:

var re = new RegExp(test, 'i')

使用通过连接 selArray 形成的(现已转义的)字符串创建一个新的正则表达式。然后根据以下行中每个选择元素的值进行测试:

if(re.test($(this).val())) $('#sel option[value="' + $(this).val() + '"]').remove()

其中,如果条件返回 true,则删除相关的选择元素。

希望这有帮助!

关于javascript - jquery 在 select 中循环项目时转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com