我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。
当前回答
如果你想返回一个替换的结果,那么这将工作:
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”。
其他回答
对于多语言支持:
var filtered = 'Hello Привет 你好 123_456'.match(/[\p{L}\p{N}\s]/gu).join('')
console.log(filtered) // --> "Hello Привет 你好 123456"
这可以匹配大多数语言中的任何字母、数字或空格。
[…->匹配条件 [ab] ->匹配'a'或'b' \p{L} ->匹配任意语言中的任意字母 \p{N} ->匹配任意语言的任意数字 \s ->匹配空格 第一场比赛后不要停止 /u ->支持unicode模式匹配
裁判:https://javascript.info/regexp-unicode
字母数字区分大小写:
if (/^[a-zA-Z0-9]+$/.test("SoS007")) {
alert("match")
}
试试这个…将字段ID替换为#name… a-z(a到z), A-Z(A到Z), 0-9(0至9)
jQuery(document).ready(function($){
$('#name').keypress(function (e) {
var regex = new RegExp("^[a-zA-Z0-9\s]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
});
保存这个常数
const letters = /^[a-zA-Z0-9]+$/
现在,为了检查部件,使用.match()
const string = 'Hey there...' // get string from a keyup listner
let id = ''
// iterate through each letters
for (var i = 0; i < string.length; i++) {
if (string[i].match(letters) ) {
id += string[i]
} else {
// In case you want to replace with something else
id += '-'
}
}
return id
^\s*([0-9a-zA-Z]*)\s*$
或者,如果你想要最少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。^是输入的开始。$是输入的结束符(或换行符,取决于您的选项)。\s是空格。
前面和后面的空格是可选的。
圆括号是分组操作符,允许您提取所需的信息。
编辑:删除了我的错误使用\w字符集。