如何在JavaScript中检查字符串与白名单字符?

时间:2016-04-05 21:36:13

标签: javascript regex validation ecmascript-6

我有一些代码可以转换用户输入以确保唯一允许的字符是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提供最干净的解决方案,那就没关系了。

2 个答案:

答案 0 :(得分:1)

您可以使用匹配方法,尝试类似:

value = 'GHJHlksxa787BVK';
 
console.log(!value.match(/[^a-zA-Z0-9\-]/))

答案 1 :(得分:0)

您可以使用RegExp#test()方法:

  

执行正则表达式与指定字符串之间匹配的搜索。返回truefalse

此方法不应使用/g修饰符,以便lastIndex属性不会弄乱结果。有关详细信息,请参阅Why RegExp with global flag in Javascript give wrong results?

您的正则表达式/[^a-z0-9-]/i(匹配a-z以及A-Z0-9范围内而非-不在的任何字符都可以在此处使用。只需取出/g

var value = "GHJHlksxa787BVK";
document.body.innerHTML = /[^a-z0-9-]/i.test(value);

/i是不区分大小写的修饰符,/[a-z]/i = /[A-Za-z]/