【发布时间】:2016-04-05 21:36:12
【问题描述】:
我有一些代码可以转换用户输入以确保唯一允许的字符是 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 可以获得最干净的解决方案,那很好。
【问题讨论】:
-
你的意思是
/[^a-zA-Z0-9]/.test(value)? -
允许的字符集是否相同?如果是,您可以将自己的否定字符类与
.test()一起使用。/[^a-z0-9-]/i.test(value) -
@WiktorStribiżew 为什么在 i.test(value) 与 .test(value) 方面您的答案和 anubhava 会有所不同。 “我”是做什么的?
-
呃,这是你的正则表达式 :)
/i是区分大小写的修饰符,/[a-z]/i=/[a-zA-Z]/。此外,我的正则表达式包括一个连字符,而 anubhava 没有。是你要找的代码吗?
标签: javascript regex validation ecmascript-6