正規表現でフィールドを検証するために検証エンジンを使用しています。私は仕事をほぼ終えましたが、問題があります。次の正規表現を作成できません。
- 先頭と末尾のスペースは使用できません。
- 間に複数のスペースを入れることはできません (1 つのスペースを入れることができます)。
これを任意のフィールドに配置できるように、これらの条件に対してのみ正規表現が必要です。
正規表現でフィールドを検証するために検証エンジンを使用しています。私は仕事をほぼ終えましたが、問題があります。次の正規表現を作成できません。
これを任意のフィールドに配置できるように、これらの条件に対してのみ正規表現が必要です。
すべての言語がある種のトリミング機能にアクセスできるときに、先頭または末尾にスペースを入れずにデータを入力するように誰かに要求するのは、かなり怠惰です (そして、本当に悪いユーザビリティです)。同様にダブル スペースの場合: に置き換えるだけ" "
です" "
。
本当に正規表現でそれをしなければならない場合、これはうまくいくはずです:
/^\S+(?!.*\s\s).*\S$/
これは、有効な文字列には少なくとも 2 文字 (先頭の \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$/);"
これが望ましい理由は、誰かが理解するのがはるかに簡単であり、コードの可読性を常に優先する必要があるためです。
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