当前位置: 代码迷 >> JavaScript >> 使用Java脚本或jquery正则表达式验证一个字符串是否包含另一个字符串
  详细解决方案

使用Java脚本或jquery正则表达式验证一个字符串是否包含另一个字符串

热度:89   发布时间:2023-06-05 11:57:15.0

我正在建立一个简单的搜索,其中查询字符串可以具有通配符'*'。 搜索词可以如下所示:

  • 动物
  • ani *
  • * mal
  • 肛门

如果单词“ animal”,则以上所有内容均应返回true。

如何在JS / jquery中做到这一点?

将不胜感激。 v

字符串匹配很简单:

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个字母)。

var str = "anim*";
var replaced = str.replace("*", ".*");
var regex = new RegExp(replaced);
var result = regex.test("animal");
console.log(result);

更改str变量以使结果为true或false;

实施版本

var regexString = '^'+ $('#searchbox').val().replace("*",".*") + '$';

    if(new RegExp(regexString).test('animal'))
          $('#resultdiv').html('Matching...');
    else
        $('#resultdiv').html('Not Matching...');

您可以将通配符转换为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> 

不错的答案,但我认为使用.test()更容易。

var str = "my dog is an animal";

/dog*anim*/.test(str); //returns true
/d*mal/.test(str); //returns true

等等

试试看

  相关解决方案