RegEx for Javascript仅允许使用字母数字

RegEx for Javascript to allow only alphanumeric

我需要找到一个只允许字母数字的注册表。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,这意味着它同时包含一个字母和一个数字。我只想要一个既允许也不需要两个的。


1
2
3
4
5
6
7
/^[a-z0-9]+$/i

^         Start of string
[a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
+         one or more times (change to * to allow empty string)
$         end of string    
/i        case-insensitive


如果你想返回的replaced结果,然后将这个工作: P / < >

1
2
3
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);

这会返回。 P / < >

1
Test123TEST

注意,GI是必要的因为它意味着全球(不只是在第一比赛),和案例的insensitive,这就是为什么我在Z代替的是ZA Z。^和内部的brackets"意味着什么,不在这些brackets"。 P / < >

警告:alphanumeric太大,如果这是你想要的到底是什么。但是,如果你是用这在一个国际市场上像人的名称或地理区域,然后你需要的帐户为unicode字符数,这是不会这样做的。为例如,如果你有一个喜欢的名字吗?"lvar吗?"的,它会使它lvar"。 P / < >


使用文字字符类。*以下也konizit到^[a-zA-Z0-9_]+$: P / < >

1
^\w+$

解释: P / < >

  • ^字符串的开始,
  • 任何字的字符是W(Z,Z,0 - 9,_)。
  • 美元结束"的字符串

使用/[^\w]|_/g,如果你不想比赛的underscore。 P / < >


1
/^([a-zA-Z0-9 _-]+)$/

*以上regex allows场所在侧的字符串和restrict特殊字符数。它只是allows Z,Z,0 - 9,空间,underscore和破折号。 P / < >


1
^\s*([0-9a-zA-Z]*)\s*$

或,如果你想要的最低的一个字符。 P / < >

1
^\s*([0-9a-zA-Z]+)\s*$

广场brackets表示设定的字符数。^也开始输入。美元已经结束"的输入(或newline,取决于在你的options)。是的,太whitespace。 P / < >

"whitespace之前和之后也是可选的。 P / < >

"parentheses是grouping摄影师到让你到提取物的信息,你想要的。 P / < >

编辑:把我的erroneous使用"W"字符集。 P / < >


这将工作 P / < >

1
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$

它只接受alphanumeriuc字符数:独自一人 测试用例pased: P / < >

1
2
3
4
5
6
dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid,
abchfe   - invalid,
 abd()*  - invalid,
42232^5$ - invalid

或 P / < >

你也可以尝试这一个。这expression满足至少有一个数和一个字符和没有其他特殊的字符数 P / < >

1
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

在angular身体可以像: P / < >

1
2
3
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);

plunker演示 P / < >

refered:定期expression为alphanumeric在angularjs P / < >


extend的字符串prototype到用在你的项目 P / < >

1
2
3
    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }

usage: P / < >

1
2
   "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

代替检查为有效的alphanumeric字符串,你可以实现这indirectly同步检查的字符串为任何无效的字符数。做这样的检查为什么,matches的补体的有效alphanumeric字符串。 P / < >

1
/[^a-z\d]/i

这里是一个例子: P / < >

1
2
3
var alphanumeric ="someStringHere";
var myRegEx  = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));

注意逻辑算子的不isValid美元,由于我的测试是否的字符串也不是虚假的,无论它的有效期。 P / < >


输入这些代码到你的scratchpad和看到的动作。 P / < >

1
var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');

试着这样的……你replace field id和name #……………… Z(Z,T) Z(Z,T) 0 - 9(0到9) P / < >

1
2
3
4
5
6
7
8
9
10
11
jQuery(document).ready(function($){
    $('#name').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9\s]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        e.preventDefault();
        return false;
    });
});

它似的许多用户已经注意到这这些定期expressions几乎一定会失败,除非我们是strictly工作在英语。但我觉得有一个很简单的方式提出的,而不是如此有限公司。 P / < >

  • 让你的拷贝的字符串中所有的uppercase
  • 让第二个拷贝在所有lowercase
  • 任何的比赛,在那些字符串的字符数是在alphabetic绝对是不自然的。 P / < >

    1
    2
    3
    4
    5
    let copy1 = originalString.toUpperCase();
    let copy2 = originalString.toLowerCase();
    for(let i=0; i<originalString.length; i++) {
        let bIsAlphabetic = (copy1[i] != copy2[i]);
    }

    optionally,你也可以detect numerics by只是找digits 0到9。 P / < >


    甚至比Gayan Dissanayakepointed出来。 P / < >

    1
    /^[-\w\s]+$/

    现在^[a-zA-Z0-9]+$可以represented年代^\w+$ P / < >

    You may want to use \s instead of space. Note that \s takes care of whitespace and not only one space character.