Javascript RegExp匹配单词直到空格或字符
我试图匹配所有以#开头的单词和2#之间的单词(参见示例) 结果将是Javascript RegExp匹配单词直到空格或字符,javascript,regex,Javascript,Regex,我试图匹配所有以#开头的单词和2#之间的单词(参见示例) 结果将是[“#西班牙”、“#西班牙”、“#普通”],但它应该是[“#测试”、“#西班牙”、“#普通”] 额外:如果结果没有#,那就太好了 有人对此有解决方案吗?您可以使用 /#\w+(?:(?: +\w+)*#)?/g 见 正则表达式匹配: #-哈希符号 \w+-一个或多个字母数字和下划线字符 (?:(?:+\w+*)?-一次或零次出现: (?:+\w+)*-零次或多次出现一个或多个空格,后跟一个或多个单词字符,后跟 #-哈希符号
[“#西班牙”、“#西班牙”、“#普通”]
,但它应该是[“#测试”、“#西班牙”、“#普通”]
额外:如果结果没有#,那就太好了
有人对此有解决方案吗?您可以使用
/#\w+(?:(?: +\w+)*#)?/g
见
正则表达式匹配:
-哈希符号#
-一个或多个字母数字和下划线字符\w+
-一次或零次出现:(?:(?:+\w+*)?
-零次或多次出现一个或多个空格,后跟一个或多个单词字符,后跟(?:+\w+)*
-哈希符号#
[A-Za-z0-9]范围内的字符)
,则可以将\w
替换为[^.]
/#[^ #]+(?:(?: +[^ #]+)*#)?/g
看
var re=/#[^#]+(?:(?:+[^#]+)*#)/g;
var str=“#测试模式#西班牙降雨#主要停留在#平原#西班牙有#测试#和更多#这里”;
var m=str.match(re);
如果(m){
//使用ES6箭头函数
m=m.map(s=>s.replace(/#$/g,');
//ES5当量
/*m=m.map(函数){
返回s.replace(/#$/g.);
});*///摆脱拖尾#
document.body.innerHTML=“+JSON.stringify(m,0,4)+”;
#(?:\b[\s\S]*?\b#|\w+)
}
您也可以尝试此正则表达式
(?:
打开一个用于替换的
\b
与
\w
与
[\s\s]
匹配任何字符
(与g
global一起使用)好吧,试试看。我怀疑用正则表达式去除尾随的
有那么容易。@E.Fortes答案由Wiktor而不是我,他添加了答案,并解释、投票和接受,如果这解决了问题。我更新了代码片段,同时删除了尾随的
。我添加了另一个正则表达式,以防出现非单词字符在散列符号之间。主要的一点是里面应该有一个空格。代码段也被更新了。谢谢你的帮助和很好的解释。完成了工作。谢谢bobble。我已经用过这个:/#[^#]+(?:(?:+[^#]+)*#
#(?:\b[\s\S]*?\b#|\w+)