【发布时间】:2011-03-29 09:27:24
【问题描述】:
我有一个正则表达式^(?=.*?[A-Za-z])\S*$,它表示输入应该包含字母,并且可以包含特殊字符或数字以及字母。但它不允许空格,因为我使用了 \S。
有人可以建议我一个 reg exp,它应该包含字母,它可以包含数字或特殊字符和空格,但字母是必须的,最后一个字符不应该以空格结尾
【问题讨论】:
标签: javascript regex
我有一个正则表达式^(?=.*?[A-Za-z])\S*$,它表示输入应该包含字母,并且可以包含特殊字符或数字以及字母。但它不允许空格,因为我使用了 \S。
有人可以建议我一个 reg exp,它应该包含字母,它可以包含数字或特殊字符和空格,但字母是必须的,最后一个字符不应该以空格结尾
【问题讨论】:
标签: javascript regex
很简单:
^(?=.*?[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$
【讨论】:
.*\S$ 可以验证:例如[A-Za-z].*\S$。您能否编辑问题以添加此要求?
var r = /^.*[A-Za-z].*\S$/; - 这里没什么特别的。 developer.mozilla.org/en/Core_JavaScript_1.5_Guide/…
^(?=.*?[A-Za-z]).*\S$。我会更新答案。也可以使用[A-Za-z].*\S$|[A-Za-z]$,但不如第一个选项那么优雅。