我不明白为什么这些正则表达式无法正常工作。只接受字母和空格,数字和空格,以及在不同的框中输入空格的字母和数字
我需要3种不同类型的表达式检查,但是这些方法并不像他们所想的那样完全工作。他们的工作“部分”,如#output2的例子所示,其中响应结果是无效的,但它并没有捕获第一个。我假设有一些我很想念的东西?
我尝试做以下验证...
编辑澄清SORRY!
var letters - 只能接受绝对没有数字或特殊字符的字母,但仍允许空格,但最多只能有1个空格(因此不能有双空格),并且不能以空格开头或结尾。一个空字符串仍然应该通过有效。
var digits - 与var的字母相同,只是数字只有没有特殊字符的字母。任何地方都没有领导或训练场地或双人空间。空白条目仍然有效。
var lettersDigits - 只允许字母和数字没有特殊字符。任何地方都没有领导或训练场地或双人空间。空白条目仍然有效。
https://jsfiddle.net/umdhh5fb/
var value = '2 a s 2 s 2 a';
var valueInValid = 'a a a a a 2'
var valueDigits = '12321 asda 12312 2';
var letters = /([a-zA-Z]+\s)*[a-zA-Z]+$/; // only letters with no more than 2 spaces
var digits = /[\d+\s]*[\d]+$/; // only digits with no more than 2 spaces
var lettersDigits = /[a-zA-Z\d+\s]*[a-zA-Z\d]+$/; // digits and letters allowed no special characters no more than 2 spaces
if (letters.test(value) == false) {
$("#output").text("invalid");
} else {
$("#output").text("valid");
}
if (letters.test(valueInValid) == false) {
$("#output2").text("invalid");
} else {
$("#output2").text("valid");
}
if (digits.test(valueDigits) == false) {
$("#output3").text("invalid");
} else {
$("#output3").text("valid");
}
if (lettersDigits.test(value) == false) {
$("#output4").text("invalid");
} else {
$("#output4").text("valid");
}
<div id="output"></div> /* returns valid */
<div id="output2"></div> /* returns invalid */
<div id="output3"></div> /* returns valid */
<div id="output4"></div> /* returns valid */
这是使用Javascript,HTML不是。 – Barmar
您的正则表达式都不会使用'^'锚定到字符串的开头。所以他们只是测试价值的结束,而不是整个价值。 – Barmar
我不完全理解你的每个正则表达式的意图是什么。你能否准确解释你想验证的模式? (例如:“一系列字母,后跟一个或两个空格,等等”)。 –