【问题标题】:regular expression using javascript使用 javascript 的正则表达式
【发布时间】:2011-03-29 09:27:24
【问题描述】:

我有一个正则表达式^(?=.*?[A-Za-z])\S*$,它表示输入应该包含字母,并且可以包含特殊字符或数字以及字母。但它不允许空格,因为我使用了 \S。

有人可以建议我一个 reg exp,它应该包含字母,它可以包含数字或特殊字符和空格,但字母是必须的,最后一个字符不应该以空格结尾

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    很简单:

    ^(?=.*?[A-Za-z]).*$
    

    请注意,在 JavaScript 中 . 不匹配新行,并且没有全点标志 (/s)。如果这是一个问题,您可以使用 [\s\S] 之类的东西:

    ^(?=[\s\S]*?[A-Za-z])[\s\S]*$
    

    由于您只有一个前瞻,您可以将模式简化为:

    ^.*[A-Za-z].*$
    

    或者,更简单:

    [A-Za-z]
    

    [A-Za-z] 如果在字符串中的任意位置找到一个字母,就会匹配,您实际上不需要从头到尾搜索其余部分。


    要验证最后一个字符不是空格,再次使用前瞻可能是最简单的(因为它基本上表示正则表达式中的AND

    ^(?=.*?[A-Za-z]).*\S$
    

    【讨论】:

    • [A-Za-z] 有效,但我还需要检查以确保最后一个字符不是空格
    • @User - 每个模式末尾的.*\S$ 可以验证:例如[A-Za-z].*\S$。您能否编辑问题以添加此要求?
    • 还有一件事,我无法将 ^.*[A-Za-z].*\S$ 分配给变量然后使用它
    • @user - 应该是 var r = /^.*[A-Za-z].*\S$/; - 这里没什么特别的。 developer.mozilla.org/en/Core_JavaScript_1.5_Guide/…
    • @user - 非常正确 - 如果最后一个字符是唯一的字母,它也不起作用。您可以再次使用第一个:^(?=.*?[A-Za-z]).*\S$。我会更新答案。也可以使用[A-Za-z].*\S$|[A-Za-z]$,但不如第一个选项那么优雅。
    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多