我需要找到一个只允许使用字母数字的注册表.到目前为止,我尝试的每个人只有在字符串是字母数字时才有效,这意味着包含字母和数字.我只想要一个允许两者的东西而不需要两者.
/^[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
如果你想返回一个替换结果,那么这将有效:
var a = 'Test123*** TEST'; var b = a.replace(/[^a-z0-9]/gi,''); console.log(b);
这将返回:
Test123TEST
请注意,gi是必需的,因为它意味着全局(不仅仅是第一次匹配),而且不区分大小写,这就是为什么我有az而不是a-zA-Z.括号内的^表示"不在这些括号中的任何东西".
警告:如果这正是您想要的,那么字母数字就很棒.但是,如果您在国际市场上使用此类似于某个人的姓名或地理区域,那么您需要考虑unicode字符,这是不可行的.例如,如果你有一个像"Âlvarö"这样的名字,它会使它成为"lvar".
使用单词class class.以下相当于^[a-zA-Z0-9_]+$
:
^\w+$
说明:
^字符串的开头
\ w任何单词字符(AZ,az,0-9,_).
$ end of string
使用/[^\w]|_/g
,如果你不想匹配下划线.
/^([a-zA-Z0-9 _-]+)$/
上面的正则表达式允许字符串中的空格并限制特殊字符.它只允许az,AZ,0-9,Space,Underscore和dash.
^\s*([0-9a-zA-Z]*)\s*$
或者,如果您想要至少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符.^是输入的开始.$是输入结束(或换行符,具体取决于您的选项).\ s是空白.
之前和之后的空格是可选的.
括号是分组运算符,允许您提取所需的信息.
编辑:删除了错误使用\ w字符集.
这会奏效
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
它仅接受alphanumeriuc字符:
测试用例:
dGgs1s23 - valid 12fUgdf - valid, 121232 - invalid, abchfe - invalid, abd()* - invalid, 42232^5$ - invalid
要么
你也可以试试这个.这个表达式至少满足一个数字和一个字符,没有其他特殊字符
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
在角度可以测试像:
$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 中字母数字的正则表达式