我需要找到一个只允许字母数字的正则表达式。到目前为止,我尝试的每个人都只在字符串是字母数字时才有效,意思是包含一个字母和一个数字。我只想要一个允许两者之一而不需要两者。
用于 Javascript 的 RegEx 仅允许字母数字
IT技术
javascript
regex
2021-01-15 16:57:40
6个回答
/^[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
更新(支持通用字符)
如果您需要此正则表达式支持通用字符,您可以在此处找到unicode 字符列表。
例如: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
这将支持波斯语。
如果您想返回替换的结果,那么这将起作用:
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 ^[a-zA-Z0-9_]+$
:
^\w+$
解释:
- ^ 字符串开头
- \w 任何单词字符(AZ、az、0-9、_)。
- $ 字符串结尾
使用/[^\w]|_/g
,如果你不想匹配下划线。
/^([a-zA-Z0-9 _-]+)$/
上面的正则表达式允许字符串中的空格并限制特殊字符。它只允许 az、AZ、0-9、空格、下划线和破折号。
^\s*([0-9a-zA-Z]*)\s*$
或者,如果您想要至少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。^ 是输入的开始。$ 是输入的结尾(或换行符,取决于您的选项)。\s 是空格。
前后的空格是可选的。
括号是分组运算符,允许您提取所需的信息。
编辑:删除了我对 \w 字符集的错误使用。