以下是我的正则表达式:
-
但它在?
处抛出错误。我使用-
,这应该允许one:body | two:body
出现零次或一次。为什么会出错?
答案 0 :(得分:2)
正则表达式的问题在于模式附有[
和]
,被视为字符类标记(请参阅Character Classes or Character Sets):
使用"字符类",也称为"字符集",您可以告诉正则表达式引擎只匹配多个字符中的一个。只需将要匹配的字符放在方括号中即可。如果您想匹配
a
或e
,请使用[ae]
。
在字符类中,-
创建文字字符之间的范围。在您的情况下,这些范围无效(从具有较高值的字符转到具有较低值的字符),因为{4}
和其他子模式被视为单独的字符,而不是特殊构造:
所以,您需要做的就是删除双方的[
和]
:
^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">
转义-
并移除\
和[
:
]