0

検索文字列でワ​​イルドカードが使用されるかどうかをチェックする関数を作成しようとしています。

例。

%name% var search_type = "LIKE"

%name var search_type = "LIKE"

name% var search_type = "LIKE"

name   var search_type = "EQUALS"

4種類の例を実証するためにJavaScriptの正規表現をどのように記述できますか?

<html>

<head>

<script type="text/javascript">

function test() {

var name = document.getElementById("search").value


}


</script>


</head>

<body>

<input type="text" id="search">

<input onclick="test()" type="submit" value="Submit">

</body>

</html>
4

3 に答える 3

1

これがデモです

function test() {
    var name = document.getElementById("search").value;
    var search_type = '';

    if (name.indexOf('%') > -1) {
        search_type = 'like';
    } else {
        search_type = 'equals';
    }
    alert(search_type);
    return search_type;
}


アップデート

上記のコードは%、テキスト内の記号の位置に関係なく機能します。開始または終了、あるいはその両方にある必要がある場合は、以下のコードを使用してください
ここにデモ

function test() {
    var name = document.getElementById("search").value;
    var position = name.indexOf('%');
    var search_type = '';

    if (position === 0 || position === name.length) {
        search_type = 'like';
    } else {
        search_type = 'equals';
    }

    alert(search_type);
    return search_type;
}
于 2013-01-02T19:22:36.977 に答える
1

あなたの例に基づいて、あるsearch_typeべき唯一LIKEの兆候は、値にパーセント記号が含まれているかどうかです%。その場合は、次のindexOf('%')いずれかがあるかどうかを確認するために使用できます。

var search_type = (someValue.indexOf('%') > -1) ? 'LIKE' : 'EQUALS';

現在のコードを使用する:

function test() {
    var search_type = (document.getElementById("search").value.indexOf('%') > -1) ? 'LIKE' : 'EQUALS';
    // any other processing required...
    return search_type;
}

%さらに、文字列の先頭、末尾、または先頭と末尾の両方である必要があり、それぞれに異なる修飾子を使用することを明示したい場合は、増分フラグを使用できます。

var search_flag = 0;
var value = document.getElementById('search').value;
if (value.substring(0, 1) == '%') search_flag += 1;
if (value.substring(value.length - 1) == '%') search_flag += 2;

var search_type = (search_flag == 0) ? 'EQUALS' : 'LIKE';
if (search_flag == 1) {
    // % is at beginning of string
    // do stuff...
} else if (search_flag == 2) {
    // % is at end of string
    // do stuff...
} else if (search_flag == 3) {
    // % is at beginning and end of string
    // do stuff...
}

単純なEQUALS/LIKEチェックが必要な場合、これは完全に不要ですが、特定のワイルドカードの場所が必要な場合は拡張可能です。

于 2013-01-02T19:22:50.380 に答える
0
function test() {
    var name = document.getElementById("search").value;
    if( name.substring(0,1) == "%" || name.substring(name.length - 1, name.length) == "%"){
        var search_type = "LIKE";
    }
    else {
        var search_type = "EQUALS";
    }
}
于 2013-01-02T19:31:42.400 に答える