我正在寻找正则表达式,它允许不以空格开头且不以空格结尾的字符串,并且不包含连续的少量空格。
允许:
asd asd asd,
asdasd,
asd asd,
不允许:
asd asdasd,
asdasd,
asdasd ,
答案 0 :(得分:5)
一个没有预见的简单解决方案:
^\S+(?: \S+)*$
此解决方案还将匹配长度为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)