Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我有一个正则表达式,它将所有以@开头的单词放入span标记中。 我已经完成了所需要的,但我不确定我是否完全理解我在这里所做的 content.replace(/(@\S+)/gi,“$1”) ()表示匹配整个单词,对吗 @的意思是以@开头 \S表示“后跟任何内容,直到出现空白” 但是,如果不在\S后面添加+号,它为什么只匹配第一个字母 任何输入都将不胜感激。content.replace(/(@\S+)/gi,“$1”) content.replace(/(@\S+)/gi,"<span&

我有一个正则表达式,它将所有以@开头的单词放入span标记中。 我已经完成了所需要的,但我不确定我是否完全理解我在这里所做的

content.replace(/(@\S+)/gi,“$1”)

  • ()表示匹配整个单词,对吗
  • @的意思是以@开头
  • \S表示“后跟任何内容,直到出现空白”
  • 但是,如果不在\S后面添加+号,它为什么只匹配第一个字母

    任何输入都将不胜感激。

    content.replace(/(@\S+)/gi,“$1”)
    
    content.replace(/(@\S+)/gi,"<span>$1</span>")
    
    (@\S+
    是一个捕获组,它捕获
    @
    后跟1个或多个(
    +
    表示1个或多个)非空白字符(
    \S
    是非空白字符)

    g
    表示全局,即替换所有实例,而不仅仅是第一个匹配
    i
    表示不区分大小写
    $1
    获取第一个捕获组捕获的内容


    因此,
    i
    是不必要的,但不会影响任何内容。

    \S
    是任何非空白字符,
    a+
    表示一个或多个。所以

    @\S
    ->一个@后跟一个
    非空白字符

    @\S+
    ->后跟一个或多个非空白字符的@

    \S表示“后跟任何内容,直到出现空白”


    这不是
    \s
    的意思。它是“任何非空白字符”,即一个非空白字符。

    共享将哈希标记更改为链接的代码

    /(@\S+)gi/
    
    1st Capturing group (@\S+)
        @ matches the character @ literally
        \S+ match any non-white space character [^\r\n\t\f ]
            Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
    g - all the matches not just first
    i - case insensitive match
    
    var p=$(“p”);
    var string=p.text();
    p、 html(string.replace(/#(\S+)/gi',)
    
    
    在这里测试代码35; abc#123#xyz