javascript - 正则表达式,字符串是白名单字符的组合,不包含黑名单中的任何字符

标签 javascript regex qml

1) 如何正则表达式验证用户输入包含 A 组字符的任意组合并且不包含另一组 D 的任何字符?
2) 同时检查字符串长度是否在 2 到 255 之间

换句话说,对于所有字符串字符:A AND NOT D。

我从服务器收到两组字符(白名单和黑名单),需要根据这些字符验证用户输入。我不能影响设计,必须忍受它。由于其他设计限制,我还必须使用正则表达式。


这是我到目前为止所得到的(根本没有工作):

/^(?![23]+)[0-9]{2,255}$/

23 为简单起见,将字符列入黑名单
为简单起见,0-9 将是字符的白名单

一些例子:

3014567890 --> 失败,3存在
0145678902 --> 失败,2存在
0123456789 --> 失败,2和3存在
014567890 --> 好的
88774411489 --> 好的
5 --> 失败,没有足够的字符
1abc --> 失败,abc 非法字符
ab1c --> 失败,abc 非法字符
abc1 --> 失败,abc 非法字符


谢谢!

最佳答案

你快到了,前瞻断言需要一些工作:

/^(?!.*[23])[0-9]{2,255}$/

这样,如果字符串中的任何地方(即,在任意数量的字符之后)有(至少)一个 23,则否定先行中的正则表达式匹配(.*)),导致断言失败。

在这个(显然)简化的示例中,您当然可以只使用 /^[014-9]{2,255}$/

关于javascript - 正则表达式,字符串是白名单字符的组合,不包含黑名单中的任何字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360540/

相关文章:

javascript - 从 Controller 中测试 Ember.js 路由导航

javascript - 如何在javascript中使用正则表达式只获取数字

qt - 将项目添加到自定义组件的布局

javascript - 为 Next.js 的服务器文件设置自定义目录

javascript - 启用 CSP 时应避免哪些与 eval() 相关的函数?

javascript - 动态创建表单栏杆

regex - 当找到最后一次出现的单词时,这个正则表达式是如何工作的?

javascript - 替换多个空格,多次出现的逗号

qt - 将参数从 C++ 传递到 QML

Qt QML : What's the exact meaning of the property of enabled of Connections