正则expression式的JavaScript只允许字母数字
我需要find一个只允许字母数字的registry。 到目前为止,我所尝试的每个人只有在string是字母数字时才起作用,这意味着包含一个字母和一个数字。 我只是想要一个什么可以允许,而不是要求两个。
/^[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
如果你想返回一个replace的结果,那么这将工作:
var a = 'Test123*** TEST'; var b = a.replace(/[^a-z0-9]/gi,''); console.log(b);
这将返回:
Test123TEST
请注意,gi是必要的,因为它意味着全局(不仅仅是第一次匹配),而且不区分大小写,这就是为什么我有az而不是a-zA-Z。 括号内的^表示“不在这些括号内的任何内容”。
警告:字母数字是伟大的,如果这正是你想要的。 但是如果你在国际市场上使用这个名称或地理区域,那么你需要考虑unicode字符,这是不行的。 例如,如果你有一个像“Âlvarö”这样的名字,它会使它成为“lvar”。
使用字符类。 以下相当于一个^[a-zA-Z0-9_]+$
:
^\w+$
说明:
- ^string的开头
- \ w任何单词字符(AZ,az,0-9,_)。
- $string的结尾
如果您不想匹配下划线,请使用/[^\w]|_/g
。
/^([a-zA-Z0-9 _-]+)$/
上面的正则expression式允许在string中的空格和限制特殊字符。它只允许az,AZ,0-9,空格,下划线和短划线。
^\s*([0-9a-zA-Z]*)\s*$
或者,如果您想要至less一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。 ^是input的开始。 $是input的结尾(或换行符,取决于您的选项)。 \是空格。
前后的空白是可选的。
圆括号是分组操作符,允许您提取所需的信息。
编辑:删除了\ w字符集的错误使用。
这将工作
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
它只接受alphanumeriuc字符:
testing案例:
dGgs1s23 - valid 12fUgdf - valid, 121232 - invalid, abchfe - invalid, abd()* - invalid, 42232^5$ - invalid
要么
你也可以试试这个。 这个expression式至less包含一个数字和一个字符,没有其他特殊字符
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
在angular度可以testing像:
$scope.str = '12fUgdf'; var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$'); $scope.testResult = pattern.test($scope.str);
PLUNKER DEMO
引用: Angularjs中的字母数字的正则expression式
您可以通过检查string是否有任何无效的字符来间接地实现此目的,而不是检查有效的字母数字string。 通过检查与有效字母数字string的补码匹配的任何内容来执行此操作。
/[^az\d]/i
这里是一个例子:
var alphanumeric = "someStringHere"; var myRegEx = /[^az\d]/i; var isValid = !(myRegEx.test(alphanumeric));
注意isValid
的逻辑not操作符,因为我testingstring是否为false,而不是它是否有效。
扩展string原型以在整个项目中使用
String.prototype.alphaNumeric = function() { return this.replace(/[^a-z0-9]/gi,''); }
用法:
"I don't know what to say?".alphaNumeric(); //Idontknowwhattosay
甚至比Gayan Dissanayake
指出。
/^[-\w\s]+$/
现在^[a-zA-Z0-9]+$
可以表示为^\w+$
您可能想要使用\ s而不是空格。 请注意, \ s处理空格而不仅仅是一个空格字符。