正则表达式 - 字符串无法启动,以空格结尾并且由一行中的少量空格组成

时间:2015-02-02 08:30:58

标签: javascript regex

我正在寻找正则表达式,它允许不以空格开头且不以空格结尾的字符串,并且不包含连续的少量空格。

允许:

asd asd asd,
asdasd,
asd asd,

不允许:

asd   asdasd,
 asdasd,
asdasd  ,

4 个答案:

答案 0 :(得分:5)

一个没有预见的简单解决方案:

^\S+(?: \S+)*$

Demo on regex101

此解决方案还将匹配长度为1的字符串,如a

我假设你不想允许标签或新行作为空格字符。请注意,此处的大多数解决方案都没有考虑Unicode空间,您必须手动指定这些空间以防止匹配。

答案 1 :(得分:1)

您可以使用此正则表达式:

/^\S(?!.*\s{2}).*?\S$/

<强>解释

  • ^行开始
  • \S - 在开始时匹配非空格
  • (?!.*\s{2})否定前瞻以禁止连续2个空格
  • .*? - 匹配任何字符(0或更多,非贪婪)
  • \S - 匹配结尾的非空格
  • $ - line end

答案 2 :(得分:1)

您可以使用以下

/((^[^\s]).*?([^\s]$))/

编辑:(解释,)

^匹配行开始,

[^\s]匹配任何不是空格的内容

.*?匹配任何字符

$匹配行结束

编辑:

如果你想从字符串中删除相邻空格的可能性,你可以使用这个正则表达式。

/((^(?!\s))(\w|\s(?!\s+))+((?<!\s)$))/

上面的正则表达式可能无法在javascript中工作,因为最后的负面看法,但对python工作正常。

答案 3 :(得分:1)

^(?!.*[ ](?=[ ]))\S.*?\S$

试试这个。看看演示。

https://regex101.com/r/vD5iH9/33