首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >接受正则表达式中的字母数字字符、空格、点和短划线[JavaScript]

接受正则表达式中的字母数字字符、空格、点和短划线[JavaScript]
EN

Stack Overflow用户
提问于 2018-09-16 03:09:23
回答 1查看 117关注 0票数 -1

我正在做一个正则表达式,它接受数字(0-9)、字母(a-z,包括ñ)、点(.)、破折号(-)和空格。到目前为止,我所做的是regexp接受字母数字字符和空格,但我不知道如何包括点和破折号。

到目前为止我的代码如下:

代码语言:javascript
复制
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;

},

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 03:11:08

要接受短划线或点,只需使用反斜杠对字符进行转义,并将其视为文字:

代码语言:javascript
复制
var expreg = /^[a-zA-ZñÑ\.\- ]{4,20}$/;

此外,来自here

连字符可以紧跟在左方括号之后、右方括号之前或否定插入符号之后。-x和x-匹配x或连字符。^-x和^x-匹配任何不是x或连字符的字符。这在本教程中讨论的所有类型中都有效。字符类中不能形成范围的其他位置的连字符可能会被解释为文字或错误。正则表达式的风格在这一点上非常不一致。

此外,正如Ry在下面指出的,并在这里指出:

通常元字符是字符类中的普通字符,不需要使用反斜杠进行转义。

因此,您可以将其简化为以下内容(无需转义):

代码语言:javascript
复制
var expreg = /^[-a-zA-ZñÑ. ]{4,20}$/;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52348002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档