正则表达式表示不能使用一次或不使用

时间:2016-01-13 11:40:27

标签: regex regex-lookarounds

以下是我的正则表达式:

-

但它在?处抛出错误。我使用-,这应该允许one:body | two:body 出现零次或一次。为什么会出错?

2 个答案:

答案 0 :(得分:2)

正则表达式的问题在于模式附有[],被视为字符类标记(请参阅Character Classes or Character Sets):

  

使用"字符类",也称为"字符集",您可以告诉正则表达式引擎只匹配多个字符中的一个。只需将要匹配的字符放在方括号中即可。如果您想匹配ae,请使用[ae]

在字符类中,-创建文字字符之间的范围。在您的情况下,这些范围无效(从具有较高值的​​字符转到具有较低值的字符),因为{4}和其他子模式被视为单独的字符,而不是特殊构造:

enter image description here

所以,您需要做的就是删除双方的[]

^4\d{3}-?\d{4}-?\d{4}-?\d{4}$

请参阅regex demo

答案 1 :(得分:1)

尝试使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select multiple id="select2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="12">12</option> <option value="23">23</option> <option value="34">34</option> <option value="11">11</option> <option value="25">25</option> <option value="83">83</option> <option value="81">81</option> <option value="82">82</option> <option value="73">73</option> </select> <input type="button" value="Up"> <input type="button" value="Down">转义-并移除\[

]