我正在做一个正则表达式,它接受数字(0-9)、字母(a-z,包括ñ)、点(.)、破折号(-)和空格。到目前为止,我所做的是regexp接受字母数字字符和空格,但我不知道如何包括点和破折号。
到目前为止我的代码如下:
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;
},
有什么想法吗?谢谢!
发布于 2018-09-16 03:11:08
要接受短划线或点,只需使用反斜杠对字符进行转义,并将其视为文字:
var expreg = /^[a-zA-ZñÑ\.\- ]{4,20}$/;
此外,来自here
连字符可以紧跟在左方括号之后、右方括号之前或否定插入符号之后。-x和x-匹配x或连字符。^-x和^x-匹配任何不是x或连字符的字符。这在本教程中讨论的所有类型中都有效。字符类中不能形成范围的其他位置的连字符可能会被解释为文字或错误。正则表达式的风格在这一点上非常不一致。
此外,正如Ry在下面指出的,并在这里指出:
通常元字符是字符类中的普通字符,不需要使用反斜杠进行转义。
因此,您可以将其简化为以下内容(无需转义):
var expreg = /^[-a-zA-ZñÑ. ]{4,20}$/;
https://stackoverflow.com/questions/52348002
复制相似问题