我正在尝试允许使用字母数字和一些特殊字符
var regx = /^[A-Za-z0-9._-\] ]+$/;
我尝试使用正斜杠转义符号,但它仍然无法正常工作。 我缺少什么
答案 0 :(得分:3)
您还需要转义-
字符:
/^[A-Za-z0-9._\-\] ]+$/
//------------^
并非总是需要转义-
。但是,它在方括号内使用,这使得JavaScript引擎假设您正在尝试指定_-]
的范围,这导致“字符类中的范围乱序”错误。
请注意,/[_-a]/
是有效的正则表达式,匹配字符_
,`
和a
(ASCII代码95 ... 97);这可能不是理想的结果。
答案 1 :(得分:1)
如果您在regex101等在线正则表达式测试器上试用正则表达式,则会收到错误消息:
<强> Regex link 强>
您必须使用-
转义\-
:
^[A-Za-z0-9._\-\] ]+$
顺便说一下,你可以将你的正则表达式缩短为:
^[\w.\-% ]+$
编辑:为您的评论添加了正则表达式:
^[\w.-\]\[ #$>()@{}'"]+$
<强> Working demo 强>