提问者:小点点

字母数字和单个空格的正则表达式


如何在字母数字单词之间允许单个空格?

我使用的正则表达式是"^(?![ 0-9]*$)[a-zA-Z0-9]$"

  1. 开始时禁止使用数字
  2. 允许一个或多个字母字符后的字母和数字

示例:

允许

  • 谷歌
  • 401车,目前不允许!
  • 401车

不允许

  • 012 Avenue
  • 中央公园
  • 34134

测试:https://regex101.com/r/StK21o/2/


共2个答案

匿名用户

您可以使用这个正则表达式,它使用负向前看来丢弃以数字开头的字符串,否则捕获只能用一个空格分隔的文本,

^(?!\d)[a-zA-Z\d]+(?: [a-zA-Z\d]+)*$

正则表达式的解释:

  • ^-字符串的开头
  • (?!\d)-如果字符串以数字开头,则拒绝匹配
  • [a-zA-Z\d]-捕获一个或多个字母数字字符
  • (?:[a-zA-Z\d])*-进一步捕获零个或多个空格分隔的字母数字字符
  • $-字符串结尾

演示

匿名用户

这个表达式应该可以。

[a-zA-Z][a-zA-Z0-9]* (?:\ [a-zA-Z0-9])? $

  1. 第一个字符必须以字母开头
  2. 从第2个字符开始允许使用字母数字字符
  3. 字符串中的1个可选空格(不以空格结尾或开头)
  • ^表示字符串的开头
  • [a-zA-Z]匹配字母表
  • [a-zA-Z0-9]匹配零个或多个字母数字字符
  • (?:\ [a-zA-Z0-9] )? 允许一组以空格开头的可选字符串,后跟至少1个字母数字字符
  • $表示字符串的结尾

https://regex101.com/r/3IHN6j/4