我尝试使用此图案正则表达式验证串
^[A-z]*[A-z,-, ]*[A-z]*
来匹配与随后由多个连字符或空间的多个字母字符(AZ)开始并以字母字符结尾的字符串,如:
Azasdas- - sa-as
但它不起作用。
我尝试使用此图案正则表达式验证串
^[A-z]*[A-z,-, ]*[A-z]*
来匹配与随后由多个连字符或空间的多个字母字符(AZ)开始并以字母字符结尾的字符串,如:
Azasdas- - sa-as
但它不起作用。
您不需要逗号,在字符范围内,您还需要指定[A-Za-z\- ]
,因为A-Z和a-z的ASCII不是连续的。你错过了一些可允许的空间,而你最后的表达式需要解释这些传说。
你需要的东西更接近这个:
^([A-Za-z]*)-\s*([A-Za-z][A-Za-z -]*)([A-Za-z-]*)$
根据您真的想打破上去。如果不知道“块”背后的上下文,它可能会或可能不会轻松地将它拆分为连字符。
编辑
其实,它更像是:
^([A-Za-z]*)([- ]*)([A-Za-z-]*)$
这是一个词,其次是任意空格和连字符,接着是可能包含一个连字符的词。
@NullUserExceptionఠ_ఠ在第一个单词中不允许出现非字母字符? –
你就像一个忍者! (是的,我粘贴了错误的字符串 - 只是编辑它。) –
如果将'-'放在字符类的末尾或开头,则会失去其特殊含义。 – NullUserException
不要使用 ''(逗号)
^[A-z]*[A-z- ]*[A-z]*
'[A-Z]'允许非字母。 –
目前公认的答案(^[A-Za-z][A-Za-z-]*[A-Za-z]$
)将只匹配至少两个字符长的字符串 - 例如,它将匹配字符串"AB"
,但不仅仅是"A"
或"B"
。与此相比,此正则表达式:
^[A-Za-z]+([ -]+[A-Za-z]+)*$
通过分组[ -]+
和第二[A-Za-z]+
在一起我是说,如果有任何空间和/或连字符,它们必须跟更多的字母。组中的*
量词使其成为可选项,因此"A"
将匹配,但仍符合字符串以字母开头和结束的要求。
问题通常在其中有一个'?'。很高兴你分享一个不起作用的正则表达式,但这不是共享破坏代码的地方。大多数人会问一个问题,为什么它被打破了,“你能帮忙吗?”类型的东西。 –
@MarcB:OP总结了这个问题,并告诉我们他是如何解决这个问题的;你还需要什么? “我究竟做错了什么?”暗示,并且“你能帮忙吗?”浪费空间(IMO)。 –