我有一些代码可以转换用户输入以确保唯一允许的字符是abcdefghijklmnopqrstuvwxyz-0123456789
https://jsfiddle.net/py4pnr0L/
value = 'GHJHlk;sxa787BVK'
value = value.toLowerCase()
value = value.replace(/[^a-z0-9\-]/gi, '-')
console.log(value)
返回:ghjhlk-sxa787bvk
我如何进行转换,而只是测试以查找给定字符串是否包含超出允许范围的字符?
对于给定的输入字符串,我想知道的是真/假。
我正在使用ES2015,所以如果使用ES2015提供最干净的解决方案,那就没关系了。
答案 0 :(得分:1)
您可以使用匹配方法,尝试类似:
value = 'GHJHlksxa787BVK';
console.log(!value.match(/[^a-zA-Z0-9\-]/))
答案 1 :(得分:0)
您可以使用RegExp#test()
方法:
执行正则表达式与指定字符串之间匹配的搜索。返回
true
或false
。
此方法不应使用/g
修饰符,以便lastIndex
属性不会弄乱结果。有关详细信息,请参阅Why RegExp with global flag in Javascript give wrong results?。
您的正则表达式/[^a-z0-9-]/i
(匹配a-z
以及A-Z
和0-9
范围内而非-
不在的任何字符都可以在此处使用。只需取出/g
。
var value = "GHJHlksxa787BVK";
document.body.innerHTML = /[^a-z0-9-]/i.test(value);
/i
是不区分大小写的修饰符,/[a-z]/i
= /[A-Za-z]/
。