これらの正規表現が正しく機能しない理由を理解できません。は、文字とスペース、数字とスペース、および異なるボックスにスペースを含む文字と数字のみを受け入れます。
私は3種類の式チェックが必要ですが、それらの方法は完全には動作していません。 #output2の例に示すように、「部分的に」動作しますが、応答が無効であることが分かりますが、最初の応答をキャッチしません。私は何か小さなものがあると思っています。
私は、次の検証をやろうとしている...明確化SORRY FOR
EDIT!
文字は絶対に数字も特殊文字も使用できませんが、スペースは使用できますが、最大スペースは1つのみ(したがって二重スペースはありません)、スペースで終わることはできません。空文字列は有効なものとして渡されます。
varの数字 - 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
あなたの正規表現のそれぞれの意図は完全にわかりません。検証するパターンを正確に説明できますか? (例:「一連の文字、その後に1つまたは2つのスペースが続く」など)。 –