正则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处理空格而不仅仅是一个空格字符。