0

我正在尝试构建一个函数来检查搜索字符串中是否使用通配符。

例子。

%name% var search_type = "LIKE"

%name var search_type = "LIKE"

name% var search_type = "LIKE"

name   var search_type = "EQUALS"

如何编写 javascript 正则表达式来证实这 4 种类型的示例?

<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 回答