这个正则表达式有什么问题?
/^[a-zA-Z\d\s&#-\('"]{1,7}$/;
当我输入以下有效输入时,它失败了:
a&'-#"2
还要检查输入中的 2 个连续空格。
请您参考如下方法:
破折号需要转义 (\-
) 或放在字符类的末尾,否则它将表示一个范围(如 A-Z
),不是文字破折号:
/^[A-Z\d\s&#('"-]{1,7}$/i
会是一个更好的正则表达式。
N. B: [#-\(]
会匹配 #
, $
, %
, &
、'
或 (
。
要解决不允许两个连续空格的附加要求,请使用先行断言:
/^(?!.*\s{2})[A-Z\d\s&#('"-]{1,7}$/i
(?!.*\s{2})
表示“断言不可能匹配(从当前位置开始)后跟两个空白字符的任何字符串”。一个警告:点不匹配换行符。