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);