我正在做一个正则表达式,它接受数字(0-9),字母(az,包括ñ),点(。),破折号(-)和空格。到目前为止,我所做的是我的正则表达式接受字母数字字符和空格,但是我不知道如何包括点和破折号。
到目前为止,我的代码:
function isValid(input) {
var m = input.val();
var expreg = /^[a-zA-ZñÑ ]{4,20}$/;
if (!expreg.test(m)) {
input.css('border', '1px solid red');
input.css('color', 'red');
return false;
} else {
input.css('border', '');
input.css('color', '');
}
return true;
},
有什么主意吗?谢谢!
答案 0 :(得分:1)
要接受破折号或点,只需使用反斜杠来转义字符,然后将其视为文字即可。
var expreg = /^[a-zA-ZñÑ\.\- ]{4,20}$/;
另外,来自here:
连字符可以在左括号之后,右括号之前或负号插入符之后。 [-x]和[x-]都与x或连字符匹配。 [^ -x]和[^ x-]匹配不是x或连字符的任何字符。这适用于本教程中讨论的所有风格。字符类中无法形成范围的其他位置的连字符可能会解释为文字或错误。正则表达式的味道与此不一致。
此外,正如Ry在下面指出并在此处指出的那样:
通常的元字符是字符类中的普通字符,不需要用反斜杠转义。
因此,您可以将其简化为以下内容(无需转义):
var expreg = /^[-a-zA-ZñÑ. ]{4,20}$/;