我想设计一个表达式,不允许在字符串的开头和结尾使用空格,而在字符串的中间允许使用空格。

我尝试过的正则表达式是这样的:

\^[^\s][a-z\sA-Z\s0-9\s-()][^\s$]\

最佳答案

这应该工作:

^[^\s]+(\s+[^\s]+)*$


如果要包括字符限制:

^[-a-zA-Z0-9-()]+(\s+[-a-zA-Z0-9-()]+)*$


说明:

开头^和结尾$表示字符串。

考虑到我给出的第一个正则表达式,[^\s]+表示at least one not whitespace\s+表示at least one white space。还请注意,括号()将第二个和第三个片段分组在一起,最后的*表示zero or more of this group
因此,如果您看一下,表达式为:begins with at least one non whitespace and ends with any number of groups of at least one whitespace followed by at least one non whitespace

例如,如果输入为“ A”,则它匹配,因为它与begins with at least one non whitespace条件匹配。输入“ AA”匹配的原因相同。输入“ AA”也匹配,因为第一个A匹配at least one not whitespace条件,然后“ A”匹配any number of groups of at least one whitespace followed by at least one non whitespace

'A'不匹配,因为不满足begins with at least one non whitespace条件。因为不满足ends with any number of groups of at least one whitespace followed by at least one non whitespace条件,所以'A'不匹配。

如果要限制在开始和结束处要接受的字符,请参阅第二个正则表达式。我在开头和结尾都允许使用a-z,A-Z,0-9和()。只允许这些。

正则表达式游乐场:http://www.regexr.com/

关于angularjs - 正则表达式在开头和结尾处都没有空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34974942/

10-14 04:22