0

ユーザーがテキストフィールドに「&」を入力したかどうかを検出し、その後にスペースがあることを確認するための最良の方法を考え出そうとしています。

たとえば、ユーザーが次のように入力した場合:

  Apples & Oranges

すべてうまくいきます。ただし、次のように入力した場合:

 Apples &Oranges

彼らはアラートを受け取ります。または彼らが持っている場合:

 Apples&Oranges

同じこと。

ユーザーが「&」を入力した場合に、その後にスペースがあることを確認するための最良の方法は何でしょうか。

これが私がこれまでに持っているコードです:

 function entityKiller() {
var good = true;

 $('input[type=text]:visible').each( function() {
        if(/----Regex Here-----/.test($(this).val())) {
            good = false;
            return;
        }
});

return good;

}

誰かが私を正しい方向に向けることができますか?

4

7 に答える 7

1

&スペース以外の文字が続く検索を試みることができます。の出力を反転する場合test:

if(!(/&\S/.test($(this).val()))) {
    ...
}

パターンが で終わる場合はどうなります&か? その場合、. の後にスペースはありません&。ただし、上記の例では有効と見なされます。&そうでない場合は、(非スペースが続くものの代わりに) スペースが後に続かないa を見つける必要があります。

if(!(/&(?!\s)/.test($(this).val()))) {
    ...
}

醜い、醜い、複数の否定。

編集:

Anton が指摘しているように、これは、 の後に任意の種類の空白を許可することを前提としています&。本当にスペース文字だけが必要な場合、パターンは次のようになります。

/&[^ ]/

/&(?![ ])/

編集2:

ところで、負の論理の使用を本当に避けたい場合は&、文字列のすべての後にスペースが続いていることを確認する必要があります。それがこのパターンです:

/^[^&]*(?:&[ ][^&]*)$/

アンカーがどこにあり^$文字列全体がパターンと一致していることを確認してください。

于 2012-12-13T16:24:07.000 に答える
0

この正規表現を試してください&その後にスペースはありません

/&[^\s]/
于 2012-12-13T16:25:21.007 に答える
0

がない&か、があり、その後に[スペース]が続く場合は、&を返し"success"ます。

if( $(this).val().match(/(&\s)?/g) ) { /* ok */ }
于 2012-12-13T16:25:39.597 に答える
0

これで試すことができます:http://jsfiddle.net/L2yr2/

$('input[type="text"]').keydown(function() {
    var regex = /[^a-z*]+&+[ ]+[a-z*]/;
    if (regex.test($('input[type="text"]').val())) {
       $('span').text('good match');
    } else {
       $('span').text('not matched');
    }
});
于 2012-12-13T16:51:05.413 に答える
0
[a-zA-Z]*\\s&\\s[A-Za-z]*
    |      |        |
  anytext  |        |
           |        anytext
          Space
于 2012-12-13T16:33:40.703 に答える
0

スペースなしのアンパサンドがあるかどうかを確認し、データの送信時に自動的に追加するのが最善の方法だと思います。このようなことに対してユーザーに警告を与えることは、私の意見では少し面倒です。

いずれにせよ、この RegEx を使用して、スペース以外の文字が前後にあるアンパサンドのインスタンスに一致させます。

/(&[^ ]+)|([^ ]+&)/

ここからスペースを追加するコードを処理できます。

注: \sはスペース、タブ、改行にも一致するため、使用していません。質問では、スペースのみを求めています。

于 2012-12-13T16:27:22.443 に答える
0

How about this:

/&[^\w]/

It would allow & followed by any whitespace character. Replace \w with a space if that's what you need. Test it here: http://jsfiddle.net/X7c6T/

于 2012-12-13T16:35:10.227 に答える