我正在尝试在JavaScript中创建一个Regex测试,测试字符串以包含以下任何字符:
a...z A..Z 0..9 and & - . '
我这样做但不匹配:
^[a-zA-Z0-9&.-]
完整代码:
<field-validator type="regex">
<param name="expression">^[a-zA-Z0-9&.-]+$</param>
<param name="caseSensitive">false</param>
<message key="format.name" />
</field-validator>
答案 0 :(得分:2)
这似乎有效:
[\&\-\.']
添加字母和数字:
[a-zA-Z0-9\&\-\.']
(评论后更新)
答案 1 :(得分:2)
您正在使用XML文件中的正则表达式,因此最好的方法是使用CDATA块以在其中使用文字&
和'
符号。两者中的任何一个都可以工作:
<param name="regex"><![CDATA[[a-zA-Z0-9'&.-]]]></param>
或(如果需要完整的字符串匹配):
<param name="regex"><![CDATA[(?s).*[a-zA-Z0-9'&.-].*]]></param>
由于您使用的是<param name="caseSensitive">false</param>
,因此您甚至可能会忽略模式中的A-Z
或a-z
。
请注意(?s)
启用DOTALL模式,以便.
可以匹配任何字符,包括换行符。
答案 2 :(得分:1)
您必须\
escape个特殊字符。
[a-z0-9\-&\.']
答案 3 :(得分:0)
如果要测试输入包含 其中一个字符,请删除正则表达式的前导^
。这就是说这些角色中的任何一个都必须是第一个角色。
此外,您的正则表达式不包含字符'
。