我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。
当前回答
这是可行的
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
它只接受字母数字字符单独: 通过的测试用例:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
or
你也可以试试这个。这个表达式至少满足一个数字和一个字符,而不满足其他特殊字符
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
在angular中可以这样测试:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
恰好演示
参考:Angularjs中字母数字的正则表达式
其他回答
保存这个常数
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
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-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 _. -铝+)美元/
这将支持波斯语。
将这些代码输入到您的SCRATCHPAD并查看操作。
var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');
同样,如果你只是寻找字母字符,你可以使用下面的正则表达式:
/[^a-zA-Z]/gi
typescript中的示例代码:
let samplestring = "!#!&34!# Alphabet !!535!!! is safe"
let regex = new RegExp(/[^a-zA-Z]/gi);
let res = samplestring.replace(regex,'');
console.log(res);
注意:如果您对RegEx语法感到好奇,请访问regexr并使用小抄或使用正则表达式。
编辑:字母数字->字母