拨打特殊字符的Javascript正则表达式

时间:2017-09-25 13:51:09

标签: javascript regex validation

我有以下3个功能。  我似乎无法得到正确的正则表达式 请帮助我

    //Allow Alphanumeric,dot,dash,underscore but prevent special character and space
    function Usernames(txtName) {
        if (txtName.value != '' && txtName.value.match(/^[0-9a-zA-Z.-_]+$/) == null) {
            txtName.value = txtName.value.replace(/[\W- ]/g, '');
        }
    }
    //Allow Alphanumeric,dot,dash,underscore and space but prevent special characters
    function Fullnames(txtName) {
        if (txtName.value != '' && txtName.value.match(/^[a-zA-Z0-9. -_]+$/) == null) {
            txtName.value = txtName.value.replace(/[\W-]/g, '');
        }
    }
    //Allow Alphanumeric,dot,dash,underscore the "@" sign but prevent special character and space
    function Email(txtName) {
        if (txtName.value != '' && txtName.value.match(/^[a-zA-Z0-9.-_@]+$/) == null) {
            txtName.value = txtName.value.replace(/[\W-]/g, '');
        }
    }

1 个答案:

答案 0 :(得分:0)

你不要写正则表达式来防止"东西;他们不是黑名单,而是白名单。所以,如果有人发送了一个你不想要它的角色,因为你的正则表达式允许他们这样做。我对你的具体问题的猜测与.-_部分有关。在正则表达式中,X-Y表示"从X到Y"所以这将转化为"来自的一切。 (ASCII 2E)到_(ASCII 5F)"具有讽刺意味的是,包括所有大写和小写字母,数字0到9,/:;@等等。为了避免这种情况,您可能应该将此部分更改为:.\-_,因为斜杠将转义破折号。但是,这仍然会让您的用户使用.Bob-Larry之类的名称而您可能不想要这样,所以您的正则表达式可能应该是:

/^[0-9a-zA-Z][0-9a-zA-Z.\-_]*$/

这将要求第一个字符为字母数字,其余任何字母为字母数字,.-_

您还要检查您的值是否与此注册表匹配,而不是。我不确定Javascript中会包含什么,但我的猜测是它可能不是value == null