只接受字母和空格,数字和空格,以及不同框中带空格的字母和数字

时间:2016-08-24 23:57:58

标签: javascript regex

我无法弄清楚为什么这些正则表达式无法正常工作。

我需要3种不同类型的表达式检查,但这些方法并不像他们想象的那样完全正常工作。它们“部分”工作,如#output2的示例所示,其中响应结果是无效的,但它没有捕获第一个。我假设有一些小东西我不见了?

我正在尝试进行以下验证......

为澄清而编辑!

var letters - 应该只接受绝对没有数字或特殊字符的字母,但仍然允许空格但最多只有1个空格(所以没有双重空格)并且不能以空格结束或结束。空字符串仍应作为有效字符传递。

var数字 - 与var字母相同,但数字不包含没有特殊字符的字母。任何地方都没有领导或训练空间或双重空间。空白条目仍然有效。

var lettersDigits - 仅允许没有特殊字符的字母和数字。任何地方都没有领导或训练空间或双重空间。空白条目仍然有效。

https://jsfiddle.net/umdhh5fb/

.parent()

1 个答案:

答案 0 :(得分:2)

您需要将锚^添加到正则表达式的开头,以便它匹配整个值,而不仅仅是值的结尾。

要制作可选内容,请使用?进行操作。要在事物之间最多允许一个空格,请创建一个以空格结尾的表达式。要允许空输入,请将^$之间的所有内容设为可选。



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-z]+\s)?[a-z]+)?$/i; // only letters with no more than 1 spaces
var digits = /^((\d+\s)?\d+)?$/; // only digits with no more than 1 spaces

var lettersDigits = /^(([a-z\d]+\s)?[a-z\d]+)?$/i; // digits and letters allowed no special characters no more than 1 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");
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="output"></div>
<div id="output2"></div>
<div id="output3"></div>
<div id="output4"></div>
&#13;
&#13;
&#13;