Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅使用第一个单词匹配复合词的正则表达式_Javascript_Regex - Fatal编程技术网

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

Javascript 仅使用第一个单词匹配复合词的正则表达式,javascript,regex,Javascript,Regex,我试图在JS中创建一个正则表达式,它将匹配出现的box并返回完整的复合词 使用字符串: the box which is contained within a box-wrap has a box-button 我想得到: [box, box-wrap, box-button] 是否可以仅使用字符串框匹配这些单词 这是我迄今为止尝试过的,但它没有返回我想要的结果 试着这样做: ([\w-]*box[\w-]*) 根据注释的要求,下面是一个javascript工作示例: 功能我的搜索

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

使用字符串:

the box which is contained within a box-wrap has a box-button
我想得到:

[box, box-wrap, box-button]
是否可以仅使用字符串
匹配这些单词

这是我迄今为止尝试过的,但它没有返回我想要的结果

试着这样做:

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


根据注释的要求,下面是一个javascript工作示例:

功能我的搜索(单词、句子){
var模式=新的RegExp(“([\\w-]*”+word+“[\\w-]*)”,“gi”);
替换(模式、功能)(匹配){
document.write(match+“
”;//在这里您可以做您想做的事情 复赛; }); }; var phrase=“包装盒中包含的包装盒”+ “有一个方框按钮。它是收件箱…”; 我的搜索(“框”,短语)请尝试以下方法:

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


根据注释的要求,下面是一个javascript工作示例:

功能我的搜索(单词、句子){
var模式=新的RegExp(“([\\w-]*”+word+“[\\w-]*)”,“gi”);
替换(模式、功能)(匹配){
document.write(match+“
”;//在这里您可以做您想做的事情 复赛; }); }; var phrase=“包装盒中包含的包装盒”+ “有一个方框按钮。它是收件箱…”;
我的搜索(“框”,短语)您可以在JS中使用此正则表达式:

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

您可以在JS中使用此正则表达式:

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

这应该行得通,注意“W”是大写字母


\Wbox\W

这应该有效,注意“W”是大写字母


\Wbox\W

我就把这个扔出去:

(box[\w-]*)+

我就把这个扔出去:

(box[\w-]*)+

看起来你想用正则表达式。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']

看起来你想用正则表达式。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']

你试过什么了?展示你的努力会鼓励其他人。你已经尝试了什么?展示你的努力将鼓励其他人。这将匹配
部分,但不匹配
包装
按钮
部分。这将匹配
部分,但不匹配
包装
按钮
部分。这正是我需要的!但当我将它应用到Javascript时,它就不起作用了。请参阅问题中的我的JSFIDLE。下面是一个直接使用
document.getElementById('output').innerHTML=str.match(/(box[\w-]*)/g)的工作示例效果不错!但是我希望将字符串作为参数传递给regex,所以我想我需要使用
newregexp()
@KAD。你的小提琴和我的regex-answer不一样。这正是我需要的!但当我将它应用到Javascript时,它就不起作用了。请参阅问题中的我的JSFIDLE。下面是一个直接使用
document.getElementById('output').innerHTML=str.match(/(box[\w-]*)/g)的工作示例效果不错!但是我希望将字符串作为参数传递给regex,所以我想我需要使用
newregexp()
@KAD。您的小提琴与我的regex-answer不同。它应该可以工作,但在我的JSFIDLE中,它返回结果
box,box-w,box-
。我不知道它应该如何工作,但在我的JSFIDLE中,它返回结果
box,box-w,box-
。我不知道为什么