如何只在开始时限制空白?

时间:2019-06-21 07:37:56

标签: regex

我在开始时就写了用于限制空白的regex模式,但是它不起作用。指导我找到需要更改逻辑的地方?

^[^\s]+[a-z-A-Z]$

我需要在Java脚本中执行此操作以验证输入字段。我需要在输入字段中允许所有字符在开始时都没有空格,并且在结尾和中间都需要所有空格。

1 个答案:

答案 0 :(得分:1)

如果您只允许使用字母和空格,则[^\s]匹配任何字符,但只能包含一个空格。

使用

^[a-zA-Z][a-zA-Z\s]*$

注意:要也“允许”(=匹配)除空格,字母和数字之外的任何可打印ASCII字符,您可以在正则表达式中添加[!-\/:-@[- {-〜]`(请参阅this answer of mine ):

^[a-zA-Z][a-zA-Z\s!-\/:-@[-`{-~]*$

请参见regex demoregex graph

enter image description here

或者,如果也应该匹配一个空字符串:

^(?:[a-zA-Z][a-zA-Z\s]*)?$

请注意,要在字符类中包含连字符,将其放在字符类的开头/结尾更加安全(并且更便于携带),即使用[a-zA-Z-]代替[a-z-A-Z]

详细信息

  • ^-字符串的开头
  • [a-zA-Z]-ASCII字母
  • [a-zA-Z\s]*-0个或更多ASCII字母或空格
  • $-字符串的结尾。

(?:...)?是一个可选的非捕获组,它匹配其模式1或0次。