Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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,我有一个正则表达式来列出输入我的应用程序的搜索中的哈希标记,如下所示: 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('#')
    
    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(不带散列)
    能否给出搜索字符串和当前输出的示例以及预期输出的示例??谢谢。@NewToJS感谢您的回复。我已经包含了预期输出
    `/^#.+/`
    
    /^#.+/.test(inp)   ---> inp.startsWith('#')