我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。
当前回答
我有类似于三星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,这就是我想要的。
可能有更好的解决方案,但这是我发现工作对我很好。
其他回答
我有类似于三星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,这就是我想要的。
可能有更好的解决方案,但这是我发现工作对我很好。
保存这个常数
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-z\d]/i
这里有一个例子:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
注意isValid处的逻辑not运算符,因为我测试的是字符串是否为假,而不是它是否有效。
似乎许多用户已经注意到,除非我们严格使用英语,否则这些正则表达式几乎肯定会失败。但我认为有一种不受限制的简单方法。
复制你的字符串在所有大写 用小写字母复制一份
在这些字符串中匹配的任何字符本质上肯定不是字母。
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
此外,您还可以通过查找数字0到9来检测数字。
如果你想返回一个替换的结果,那么这将工作:
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”。