【问题标题】:regular expression in javascript? [duplicate]javascript中的正则表达式? [复制]
【发布时间】:2012-03-24 08:01:28
【问题描述】:

可能重复:
Using a string variable as regular expression

我有一个包含所有英文单词的 var。我想使用常规 exp 来根据存储在 var 中的特定字母过滤单词。

 var letter1 = "a";
    var letter2 = "b";
var words= "aardvark aardwolf aaron aback abacus abaft abalone abandon abandoned abandonment abandons abase abased abasement abash abashed abate abated abatement abates abattoir";

我尝试这样做是为了找到所有带有字母“a”和“b”的单词,但它不起作用:

document.writeln(words.match(/letter1 +/ + letter2 +/g));

【问题讨论】:

  • 你的意图不是很清楚。你想得到什么确切地?所有同时包含letter1letter2的单词?
  • 提供1.预期结果,2.实际结果,3.代码
  • <script type="text/javascript"> var abc = ["asdf","asfdf","sdgsdwvc","avdvcccv","acbfd","sdfsd","gvvfvbb","sdfge34"]; var pattern = /.*[ab].*/i; var res; for(a in abc) { res = abc[a].match(pattern); if(res!=null || res!=undefined) alert(res); } </script>

标签: javascript regex string-matching


【解决方案1】:

这个模式应该可以做到:

/\S*[ab]\S*/g

等等

var pattern = new RegExp('\S*['+letter1+'|'+letter2+']\S*','g');
var matches = words.match(pattern);
document.writeln(matches);

【讨论】:

  • 我需要找到整个单词而不仅仅是两个字母
【解决方案2】:
>>> "acadfb".match(/a.*b|b.*a/)
["acadfb"]
>>> "basdfc".match(/a.*b|b.*a/)
["ba"]
>>> "asdfbasdfcvb".match(/a.*b|b.*a/)
["asdfbasdfcvb"]
>>> "cadsfg".match(/a.*b|b.*a/)


var myStringArray = ["Hello","World","asdfsadf","asdbc","cdjfieab"];
for (var i = 0; i < myStringArray.length; i++) {
   if(myStringArray[i].match(/a.*b|b.*a/)){
    console.log(myStringArray[i]);
   };
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 2017-01-24
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多