我正在使用验证引擎用正则表达式验证字段。我几乎完成了我的工作,但有一个问题。我无法制作正则表达式:用于验证字段的正则表达式
- 不允许使用前导和尾随空格。
- 不允许多个空格(单个空格是允许的)。
我只想要这些条件的正则表达式,以便我可以把它放在任何字段上。
我正在使用验证引擎用正则表达式验证字段。我几乎完成了我的工作,但有一个问题。我无法制作正则表达式:用于验证字段的正则表达式
我只想要这些条件的正则表达式,以便我可以把它放在任何字段上。
var s = "test test test ";
// Find multiple spaces
if(s.indexOf(" ") !== -1) {
alert('Multiple spaces found');
}
// Find leading or trailing space
if (s.indexOf(" ", 0) === 0 || s.indexOf(" ", s.length-1) != -1) {
alert("Leading or trailing space found");
}
看到这个小提琴例子http://jsfiddle.net/powtac/b5mHr/2/
/^(?!\s)(?!.*\s{2})(?!.*\s$)/
应该这样做,除非你的输入可能包含换行符。如果是这种情况,请使用[\s\S]
而不是.
。
说明:
^ # Start of string
(?!\s) # Assert that the first character isn't whitespace
(?!.*\s{2}) # Assert that there are no two consecutive whitespace characters
(?!.*\s$) # Assert that the last character isn't whitespace
坚持有人进入数据没有前导或尾随空格时,每一种语言都有获得某种微调功能是非常懒惰(和非常糟糕的可用性)。同样用双空格:只需将" "
替换为" "
即可。
如果你真的必须使用正则表达式做到这一点,这应该工作:
/^\S+(?!.*\s\s).*\S$/
这确实使之成为有效的字符串至少有两个字符(在开始\ S的假设,以及\ S最后)。如果你想允许一个字符串,这将工作:
/^(?!\s.*)(?!.*\s\s).*\S$/
另外,如果你正在试图做逆并匹配无效的输入,这将工作(即此正则表达式的任何匹配的意思是字符串无效):
/^\s|\s\s|\s$/
除非有一个很好的理由,你不能,最后一个选项可能是最好甚至匹配有效的输入。即是这样的:
var isValid = !value.match(/^\s|\s\s|\s$/); // instead of "var isInvalid = value.match(/^\s|\s\s|\s$/);"
的原因,这是最好的,它是一个更容易的人明白了,你应该总是在你的代码可读性青睐。
Upvote为最后的选择。顺便说一句,它也可以用来替换所有的空间。 – nhahtdh
甚至在阅读您的问题之前,我需要知道***您尝试过什么?*** – VisioN
您可以只清理这些空格而不是进行验证...... – nhahtdh
我试过/^\ + | \ + $ /但没有得到我需要的东西。 – sanjay