Javascript 使用正则表达式拆分标签和搜索项
我有一个正则表达式来列出输入我的应用程序的搜索中的哈希标记,如下所示:Javascript 使用正则表达式拆分标签和搜索项,javascript,regex,Javascript,Regex,我有一个正则表达式来列出输入我的应用程序的搜索中的哈希标记,如下所示: text.match(/#[a-z]+/gi); 和一个正则表达式来列出搜索中的所有单词 text.match(/\S+\s*/g); 我希望能够将hashtags和words拆分为两个单独的列表,以便能够更新第二个正则表达式,使其忽略hashtags。我将如何实现这一点 例如,如果输入为: “你好,这是我今天的问题” 预期输出应为2个阵列: [Hello, this, is, for, today], [my, qu
text.match(/#[a-z]+/gi);
和一个正则表达式来列出搜索中的所有单词
text.match(/\S+\s*/g);
我希望能够将hashtags和words拆分为两个单独的列表,以便能够更新第二个正则表达式,使其忽略hashtags。我将如何实现这一点
例如,如果输入为:
“你好,这是我今天的问题”
预期输出应为2个阵列:
[Hello, this, is, for, today],
[my, question]
如果可能的话,我还想让hashtag regex返回不带hashtag的单词,否则我可以稍后在数组中对单词进行字符串拆分,如果不可能的话您可以使用负和正lookbehind来完成此操作。显然,消极的lookbehind将匹配没有“hash标签”的作品,而积极的lookbehind将匹配有它们的作品
反向查找以匹配正常搜索条件
(?您可以简单地在
空格上拆分
字符,然后检查单词是否以
开头,或者是否使用此正则表达式#
如果要匹配单个`/^#.+/`
,也可以使用#
startsWith
/^#.+/.test(inp) ---> inp.startsWith('#')
能否给出搜索字符串和当前输出的示例以及预期输出的示例??谢谢。@NewToJS感谢您的回复。我已经包含了预期输出let str=`你好,这是我今天的问题` 设{withHash,withOutHash}=str.split(/\s+/).reduce((op,inp)=>{ 让hash=/^#.+/.test(inp) let key=hash?'withHash':'withOutHash' op[键]=op[键]| |[] 操作[键]。推送(inp) 返回操作 },{}) console.log(withHash)
console.log(不带散列)`/^#.+/`
/^#.+/.test(inp) ---> inp.startsWith('#')