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到
1 | ^\w+$ |
解释: P / < >
- ^字符串的开始,
- 任何字的字符是W(Z,Z,0 - 9,_)。
- 美元结束"的字符串
使用
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)); |
注意逻辑算子的不
输入这些代码到你的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 / < >
任何的比赛,在那些字符串的字符数是在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 / < >
甚至比
1 | /^[-\w\s]+$/ |
现在
You may want to use \s instead of space. Note that \s takes care of whitespace and not only one space character.