2

正規表現の構文はよくわかりませんが、jQuery の単純な強調表示プラグインを使用しています。任意の数の異なるインデックスでアポストロフィが 1 つ以下か、まったくないかを問わず、単語を選択する必要があります。 .

たとえば、次のような文字列があるとしますTods(この文字列何でもよいことに注意してください)。

Tod'sTo'dsT'ods、またはを選択できる正規表現が必要'Todsです。(これは必要ないので、最後のインデックスにアポストロフィを含めていないことに注意してください。ただし、おそらく何も害はありません)。

これまでのところ、私はjQueryでこのコードを持っています...:

$("input.highlightTerm").each(function () {
    $(".resultValue").highlight($(this).val());
});

...$(this).val()強調表示される文字列はどこですか。

C# を使用して、この jQuery コードが$("input.highlightTerm")サーバー側で取得する非表示の入力フィールド ( ) に入力するため、C# でこれを行うこともできます。

シンプルな C# Razor 構文:

for (var n = 0; n < searchTermsArray.Length; n++)
{
    <input class="highlightTerm" type="hidden" value="@searchTermsArray[n]" />
}

これを行うために必要な正規表現の構文は何ですか?

一致する必要があるものと一致しないもののその他の例:

T'o'd's [一致する必要があります]

トッズの【似合うはず】

'Tods' [一致する必要があります]

'Tods OR Tods' [プラグインの動作方法により、実際には問題ではありませんが、一致する必要があると思います]

Tod's [一致しない]

''Tods [マッチしないほうがいい]

--ほとんどの場合、文字列内の任意の数の異なるインデックス間でアポストロフィが 1 つ以下の場合にのみ一致が必要です。

4

3 に答える 3

1

私はあなたがこのようなことをしなければならないと思います!

 function checkForApostrophe(str) {
        var length = str.length;
        if (length != 0)
        {
            // Makes sure string contains only Alphabets, numbers and apostrophe : Nothing else
            if (str.matches("[a-zA-Z0-9']*")) {
                // makes sure there is only one or zero apostrophe
                if ((str.indexOf("'") != -1) && (str.indexOf("'") == str.lastIndexOf("'"))) {
                    // Makes sure there is no apostrophe stranded at the end 
                    if (str.lastIndexOf("'") == length - 1)
                        return false
                    else
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                return false;
            }
        }
    }
于 2013-11-01T16:41:22.173 に答える