RegEx for Javascript 只允许字母数字

2022-08-30 00:02:23

我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字时才有效,这意味着同时包含字母和数字。我只想要一个允许其中任何一个,而不需要两者兼而有之。


答案 1
/^[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 _.-]+)$/

这将支持波斯语。


答案 2

如果要返回替换的结果,则此方法有效:

var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);

这将返回:

Test123TEST

请注意,gi是必要的,因为它意味着全局(不仅仅是在第一个匹配项上),并且不区分大小写,这就是为什么我有a-z而不是a-zA-Z。括号内的 ^ 表示“不在这些括号中的任何内容”。

警告:字母数字很棒,如果这正是你想要的。但是,如果您在国际市场上使用这个名字或地理区域,那么您需要考虑Unicode字符,这是行不通的。例如,如果你有一个像“Âlvarö”这样的名字,它会让它成为“lvar”。