我正在尝试构建一个函数来检查是否会在搜索字符串中使用外卡。
实施例
%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>
答案 0 :(得分:1)
这是DEMO
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;
}
的更新强>
无论文本中%
符号的位置如何,上述代码都能正常工作。如果您对 要么在开头或结尾或两者都感兴趣,请使用以下代码。
DEMO Here
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;
}
答案 1 :(得分: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
检查,这是完全没必要的 - 但如果您需要特定的通配符位置,则可以展开。
答案 2 :(得分: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";
}
}