我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。
当前回答
对于多语言支持:
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
其他回答
如果你想返回一个替换的结果,那么这将工作:
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”。
我有类似于三星Galaxy A10s 6.2英寸(2GB,32GB ROM) Android 9.0,(1300万+ 200万)+ 800万双卡4000mAh 4G LTE智能手机-黑色(BF19)
以下是我所做的:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
注意,i允许。然后使用split()和join()分别替换,to -和空格to -。
我最终得到了这样的东西: samsung-galaxy-a10s-6.2英寸-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20,这就是我想要的。
可能有更好的解决方案,但这是我发现工作对我很好。
Jquery to accept only NUMBERS, ALPHABETS and SPECIAL CHARECTERS <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> Enter Only Numbers: <input type="text" id="onlynumbers"> <br><br> Enter Only Alphabets: <input type="text" id="onlyalpha"> <br><br> Enter other than Alphabets and numbers like special characters: <input type="text" id="speclchar"> <script> $('#onlynumbers').keypress(function(e) { var letters=/^[0-9]/g; //g means global if(!(e.key).match(letters)) e.preventDefault(); }); $('#onlyalpha').keypress(function(e) { var letters=/^[a-z]/gi; //i means ignorecase if(!(e.key).match(letters)) e.preventDefault(); }); $('#speclchar').keypress(function(e) { var letters=/^[0-9a-z]/gi; if((e.key).match(letters)) e.preventDefault(); }); </script> </body> </html>
**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **
<!DOCTYPE html>
$('#onlynumbers').keypress(function(e) {
var letters=/^[0-9]/g; //g means global
if(!(e.key).match(letters)) e.preventDefault();
});
$('#onlyalpha').keypress(function(e) {
var letters=/^[a-z]/gi; //i means ignorecase
if(!(e.key).match(letters)) e.preventDefault();
});
$('#speclchar').keypress(function(e) {
var letters=/^[0-9a-z]/gi;
if((e.key).match(letters)) e.preventDefault();
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
只输入数字: 只输入字母: 输入除字母和数字以外的特殊字符:
</body>
</html>
对于多语言支持:
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
有点晚了,但这对我有用:
/[^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/
您可以随意修改和添加任何您想要的内容到括号中。 的问候:)