3

我想使用正则表达式从签入和签出中删除 2014 年和 2015 年-

在此处输入图像描述

我尝试使用 containsRegex 但我想我做错了什么:

$("option:containsRegex(/^((2014)|(2015))$/)").remove();

这是示例代码:

<select name="check_in" class="required">
    <option value="">Year</option>
        <option value="2013" selected="selected">2013</option>  
        <option value="2014">2014</option>
        <option value="2015">2015</option>
        <option value="2016">2016</option>
</select>

<select name="check_out" class="required">
    <option value="">Year</option>  
        <option value="2013" selected="selected">2013</option>  
        <option value="2014">2014</option>
        <option value="2015">2015</option>   
        <option value="2016">2016</option>
</select>

我可以这样做:

$('option:contains("2014")').remove();
$('option:contains("2015")').remove();

但我希望能够使用正则表达式来做到这一点,因为真正的文件比这更复杂。这是小提琴:http: //jsfiddle.net/PJjGb/1/所以你可以试试。

总而言之,我想删除“选择”元素的某些“选项”。并能够通过使用正则表达式来选择哪个选项 - 在此示例中,使用正则表达式从签入和签出中删除选项“2014”和“2015”。谢谢你。(在这里我没有正则表达式:http: //jsfiddle.net/PJjGb/

4

2 回答 2

4

不知道为什么你需要一个正则表达式,但它是:

$('option').filter(function() {
    return /(2014|2015)/.test(this.value);
}).remove();

小提琴

于 2013-07-23T14:51:08.740 回答
-1

正则表达式本身应该很简单/(2014|2015)/


当它只是一个使用简单 css 的简单 jQuery 调用时,为什么要使用正则表达式,如下所示:

$('option[value*=2014], option[value*=2015]').remove();

例子


了解有关CSS 选择器的更多信息

  • [属性*=值]:属性包含值
  • [attribute^=value]:属性以值开头
  • [attribute$=value]:属性以值结尾
  • [attribute~=value]:属性在空格分隔的列表中
  • [属性|=值]:属性在破折号分隔列表中

或者也正如adeneo所建议的,如果你坚持使用 RegEx,你可以使用 jQuery 的.filter()方法:

$('option').filter(function(i) { return /(2014|2015)/.test(this.value); }).remove();

例子



|或| 如果您想针对文本进行测试:

$('option:contains(2014), option:contains(2015)').remove();

例子

|或| 使用.filter()

$('option').filter(function(i) { return /(2014|2015)/.test($(this).text()); }).remove();

例子



|或| 对于针对TEXT && VALUE的完整组合测试,我建议使用agian 方法,并声明:.filter()||

$('option').filter(function(i) { return /(2014|2015)/.test(this.value) || /(2014|2015)/.test($(this).text()); }).remove();

例子

于 2013-07-23T14:51:12.523 回答