问题描述
我正在建立一个简单的搜索,其中查询字符串可以具有通配符'*'。 搜索词可以如下所示:
- 动物
- ani *
- * mal
- 肛门
如果单词“ animal”,则以上所有内容均应返回true。
如何在JS / jquery中做到这一点?
将不胜感激。 v
1楼
ANVerona
2
已采纳
2015-07-31 09:00:12
字符串匹配很简单:
var mystring = "This is my string";
var myregex = /*some regex*/
var results = mystring.match(myregex); // you can also write the regex directly as the argument of the match method, without using any variable.
因此,在您的情况下,您可以:
var mystring = "animal";
var myregex = new RegExp(inputQuery.replace(/\*/g, '.*'), 'gi'); // gi stands for 'global' and 'ignorecase' when applying the regex
var results = mystring.match(myregex);
注意.*
匹配零个或多个(来自*
whildcard)字符,任何ANY字符(来自.
)。
如果要匹配零个或多个字母,数字或下划线,请使用\\w*
;如果要匹配一个或多个字母,数字或下划线,请使用\\w+
;如果要匹配特定数量的字母,请使用\\w{x}
( \\w{3}
精确匹配3个字母)。
2楼
aelor
1
2015-07-31 09:02:07
var str = "anim*";
var replaced = str.replace("*", ".*");
var regex = new RegExp(replaced);
var result = regex.test("animal");
console.log(result);
更改str
变量以使结果为true或false;
3楼
Mahesh Jasti
0
2015-07-31 09:16:07
实施版本
var regexString = '^'+ $('#searchbox').val().replace("*",".*") + '$';
if(new RegExp(regexString).test('animal'))
$('#resultdiv').html('Matching...');
else
$('#resultdiv').html('Not Matching...');
4楼
Vadim Caen
0
2015-07-31 09:23:24
您可以将通配符转换为RegExp并执行搜索。 这是一个简单的例子。
var search = document.getElementById("search"); var result = document.getElementById("result"); result.style.color = "red"; function fsearch() { var str=search.value; str = str.replace("*", ".*") //Transform your wildcard into a RegExp result.innerHTML = "animal".match(new RegExp(str)); }
<label for="search">Search : <input name="search" id="search" type="text"/></label> <input id="ok" type="button" value="ok" onclick="fsearch()"/> Result : <div id="result"></div>
5楼
PRDeving
0
2015-07-31 09:27:55
不错的答案,但我认为使用.test()更容易。
var str = "my dog is an animal";
/dog*anim*/.test(str); //returns true
/d*mal/.test(str); //returns true
等等
试试看