正则表达式仅使用第一个单词匹配复合词

时间:2015-08-04 14:29:19

标签: javascript regex

我正在尝试在JS中创建一个正则表达式,它将匹配box的出现并返回完整的复合词

使用字符串:

the box which is contained within a box-wrap has a box-button

我想得到:

[box, box-wrap, box-button]

这是否可以仅使用字符串box来匹配这些单词?

这是我到目前为止所尝试过的,但它没有返回我想要的结果。

http://jsfiddle.net/w860xdme/

var str ='the box which is contained within a box-wrap has a box-button';
var regex = new RegExp('([\w-]*box[\w-]*)', 'g');
document.getElementById('output').innerHTML=str.match(regex);

5 个答案:

答案 0 :(得分:4)

尝试这种方式:

([\w-]*box[\w-]*)

Regex live here.

请注释,这是javascript中的一个工作示例:

function my_search(word, sentence) {
    var pattern = new RegExp("([\\w-]*" + word + "[\\w-]*)", "gi");
    sentence.replace(pattern, function(match) {
        document.write(match + "<br>"); // here you can do what do you want
        return match;
    });
};


var phrase = "the box which is contained within a box-wrap " +
             "has a box-button. it is inbox...";


my_search("box", phrase);

希望它有所帮助。

答案 1 :(得分:1)

我只是把它扔出去:

0

答案 2 :(得分:0)

你可以在JS中使用这个正则表达式:

var w = "box"
var re = new RegExp("\\b" + w + "\\S*");

RegEx Demo

答案 3 :(得分:0)

这应该有效,请注意&#39; W&#39;是大写。

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

<强> \ Wbox \ W

答案 4 :(得分:0)

看起来你想要将match与正则表达式一起使用。 Match是一个字符串方法,它将正则表达式作为参数并返回包含匹配项的数组。

var str = "your string that contains all of the words you're looking for";
var regex = /you(\S)*(?=\s)/g;
var returnedArray = str.match(regex);
//console.log(returnedArray) returns ['you', 'you\'re']