Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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,我想使用正则表达式匹配以下格式的字符串: (#sometext) 从某种意义上说,应该只匹配(和)之间的任何内容。 因此,案文: var s = "hello(%npm%)hi"; var res = s.split(/(\([^()]*\))/); alert(res[0]); o/p: hello(%npm%)hi 及 但问题是,正则表达式/(\([^()]*\)/正在匹配()之间的所有内容,而不是提取包含(#…)的字符串 比如: 这取决于每个字符串是否有多个匹配项

我想使用正则表达式匹配以下格式的字符串: (
#sometext

从某种意义上说,应该只匹配(
)之间的任何内容。 因此,案文:

var s = "hello(%npm%)hi";
var res = s.split(/(\([^()]*\))/);
alert(res[0]);
o/p: hello(%npm%)hi

但问题是,正则表达式
/(\([^()]*\)/
正在匹配
()
之间的所有内容,而不是提取包含
(#…)
的字符串 比如:


这取决于每个字符串是否有多个匹配项

//如果每个文本只有一个匹配项,则如下所示
var text=“some text#goes#”;
var matches=text.match(/#([^#]+)#/);
console.log(匹配[1]);
//如果每个文本有多个匹配项,则类似于此
var text2=“一些文本#去#和#这里#更多”;
var matches=text2.match(/#[^#]+#/g).map(函数(e){
//去掉多余的
返回e.match(/#([^#]+)#/)[1];
});

console.log(匹配项)这取决于每个字符串是否有多个匹配项

//如果每个文本只有一个匹配项,则如下所示
var text=“some text#goes#”;
var matches=text.match(/#([^#]+)#/);
console.log(匹配[1]);
//如果每个文本有多个匹配项,则类似于此
var text2=“一些文本#去#和#这里#更多”;
var matches=text2.match(/#[^#]+#/g).map(函数(e){
//去掉多余的
返回e.match(/#([^#]+)#/)[1];
});

console.log(匹配项)通过使用您获取内容的方式,尝试以下方法:

var s=“你好(%npm%)你好”;
var res=s.split(/\((.*?%\)/);
警报(res[1]);
//o/p:您好(%npm%)您好
var s=“你好(#npm#)你好”;
var res=s.split(/(\(\.*?\)/);
控制台日志(res);

//您好,(#npm#),您好
通过您获取内容的方式,尝试以下方法:

var s=“你好(%npm%)你好”;
var res=s.split(/\((.*?%\)/);
警报(res[1]);
//o/p:您好(%npm%)您好
var s=“你好(#npm#)你好”;
var res=s.split(/(\(\.*?\)/);
控制台日志(res);

//您好,(#npm#),您好
以下模式将提供所需的输出:

var s = "hello(#&yu()#$@8#)hi";
var res = s.split(/(\(#.*#\))/);
console.log(res);

“.”匹配(#和#)之间的所有内容。

以下模式将提供所需的输出:

var s = "hello(#&yu()#$@8#)hi";
var res = s.split(/(\(#.*#\))/);
console.log(res);

“.”匹配(#和#)之间的所有内容。

如果不需要括号外的部分,可以执行类似于
s.match(/\([^#]*)#\/)的操作。(你为什么要使用
.split()
?如果你真的想这样做,那么可能类似于
s.split(/(\(\)/)
?)@nnnn:我已经编辑了这个问题,试试这个:s.match(/([^.]*))/);如果不需要括号外的部分,可以执行类似于
s.match(/\([^\]*)的操作。(你为什么要使用
.split()
?如果你真的想这样做,那么可能类似于
s.split(/(\(\)/)
?)@nnnn:我已经编辑了这个问题,试试这个:s.match(/([^.]*))/);我需要输出为:hello,(#npm),第二个示例为hi,第二个示例为:hello,(#npm),第二个示例为hi
var s = "hello(#&yu()#$@8#)hi";
var res = s.split(/(\(#.*#\))/);
console.log(res);