jquery如何使用Regex </option>选择<option>

时间:2013-07-23 14:47:24

标签: javascript jquery

我想删除2014年&amp; 2015年使用Regex办理入住和退房手续 -

enter image description here

我尝试使用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/所以你可以试试。

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

2 个答案:

答案 0 :(得分:4)

不确定为什么需要一个正则表达式,但这里是:

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

FIDDLE

答案 1 :(得分:-2)

正则表达式本身应该像/(2014|2015)/

一样简单

为什么在使用简单的css进行简单的jQuery调用时才使用正则表达式,如下所示:

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

Example


详细了解CSS Selectors

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

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

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

Example



| OR | 如果您想要对文字进行测试:

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

Example

使用.filter()

| OR |

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

Example



| OR | 对于完整组合测试 TEXT &amp;&amp; VALUE ,我建议使用.filter()方法agian,并使用||语句:

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

EXAMPLE