我需要找到一个只允许字母数字的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”。
其他回答
^\s*([0-9a-zA-Z]*)\s*$
或者,如果你想要最少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。^是输入的开始。$是输入的结束符(或换行符,取决于您的选项)。\s是空格。
前面和后面的空格是可选的。
圆括号是分组操作符,允许您提取所需的信息。
编辑:删除了我的错误使用\w字符集。
保存这个常数
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
/^[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
更新(支持通用字符)
如果您需要这个regexp支持通用字符,您可以在这里找到unicode字符列表。
美国小妞example: / ^(黑a-zA-Z0-9 \ u0600——地球,随便\ u06FF u0660——\ u0669 \ u06F0——\ u06F9 _. -铝+)美元/
这将支持波斯语。
JAVASCRIPT只接受数字,字母和特殊字符
document.getElementById("onlynumbers").onkeypress = function (e) { onlyNumbers(e.key, e) }; document.getElementById("onlyalpha").onkeypress = function (e) { onlyAlpha(e.key, e) }; document.getElementById("speclchar").onkeypress = function (e) { speclChar(e.key, e) }; function onlyNumbers(key, e) { var letters = /^[0-9]/g; //g means global if (!(key).match(letters)) e.preventDefault(); } function onlyAlpha(key, e) { var letters = /^[a-z]/gi; //i means ignorecase if (!(key).match(letters)) e.preventDefault(); } function speclChar(key, e) { var letters = /^[0-9a-z]/gi; if ((key).match(letters)) e.preventDefault(); } <html> <head></head> <body> Enter Only Numbers: <input id="onlynumbers" type="text"> <br><br> Enter Only Alphabets: <input id="onlyalpha" type="text" > <br><br> Enter other than Alphabets and numbers like special characters: <input id="speclchar" type="text" > </body> </html>
有点晚了,但这对我有用:
/[^a-z A-Z 0-9]+/g
a-z:从a到z的任意值。
A-Z:从A到Z的任意值(大写)。
0-9: 0 ~ 9之间的任意数字。
它将允许方括号内的任何字符,所以假设你想允许任何其他字符,例如“/”和“#”,正则表达式将是这样的:
/[^a-z A-Z 0-9 / #]+/g
这个网站将帮助你在编码之前测试你的正则表达式。 https://regex101.com/
您可以随意修改和添加任何您想要的内容到括号中。 的问候:)