【问题标题】:VBScript regex to support all accented charactersVBScript 正则表达式支持所有重音字符
【发布时间】:2018-10-01 20:48:21
【问题描述】:

我在 VBScript 中有一个下面的正则表达式,模式:

^(?=.*[a-z])(?=.*[A-Z])(?!.*\s)(?=.*[0-9])(?=.*[!@#\$&\*])(?=.{8,20}$)

这验证了“长度下注 8-20,一个小号,大写,特殊字符和数字各”

问题#1

当我输入 à 时,它通过了验证,这不应该发生。怎么限制?

问题#2

后来,我意识到我可以使用任何语言的键盘,所以我修改了我的正则表达式以支持所有重音字母,但它也不起作用。图案:

^(?=.*\\p{L})(?!.*\s)(?=.*[0-9])(?=.*[!@#\$&\*])(?=.{8,20}$)

VBScript 是否允许使用 p{L} 正则表达式?有什么选择吗?

【问题讨论】:

    标签: regex validation vbscript non-ascii-characters


    【解决方案1】:

    您当前的模式实际上是does not validate à。但它有点偏离,不会实现你的想法。试试这个:

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$&*])[A-Za-z0-9!@#$&*]{8,20}$
                                                      ^^^ important
    

    这表示断言至少存在一个:

    • 小写字母
    • 大写字母
    • 数字
    • 特殊字符 (!@#$&*)

    然后,它匹配上述四种字符中的任何一种 8 到 20 次。

    如果其他断言通过,您的模式的关键问题以及它允许​​重音字符的原因是因为:

    (?=.{8,20})
    

    您的最终预测确实强制使用 8 到 20 个字符,但它允许 任何 字符。相反,我使用的范围仅限于您希望出现的可能的字符类型。

    【讨论】:

    • 非常感谢,它成功了。我应该如何修改我的正则表达式以支持所有字符,因为 p{L} 在 VBScript 中不适合我
    • @vishalshah 什么是“所有字符?”您能更具体地说明您在这里真正想要做什么吗?
    • 所有字符表示 a-z、A-Z、重音字符,如 àèìòùÀÈÌÒÙáéíóú。我试过 Pattern = "^(?=.*[az])(?=.*[AZ])(?!.*\s)(?=.*[0-9])(?=.*[! @#\$&*])(?=[A-Za-z0-9!@#$&*\u00C0-\u024F]{8,20}$)" 工作正常但不确定这是正确的方法去做吧?或者可能是我错过了一些东西。帮帮我
    • @vishalshah 如果\u00C0-\u024F 匹配您想要允许的重音字符,那么该模式对我来说看起来不错。
    • 在 html 中 pattern="[a-zA-Z0-9-_. ]" 可以更改为 pattern="[\p{L}0-9-_. ]" 以扩展对所有重音字符的支持。想要这样干净的解决方案,但我猜 VBScript 有自己的工作方式....!!!!
    猜你喜欢
    • 2012-02-19
    • 2013-10-25
    • 2017-03-21
    • 1970-01-01
    • 2011-09-23
    • 2015-07-27
    • 2014-03-05
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多