loc*_*boy 1 javascript regex twitter jquery
我正在尝试使用javascript解析twitter名称标签,并想知道这个正则表达式是否可以解决这个问题.我认为大部分都有效,但我只是想知道我是否正确使用1美元和2美元.人们可以确认这是正确的,如果是这样,通常会解释$ 1和$ 2代表什么?
str = str.replace(/([^\w])\@([\w\-]+)/gm,'$1<a href="http://twitter.com/$2" target="_blank">@$2</a>');
Run Code Online (Sandbox Code Playgroud)
我认为你正在使用的$n正确:
$ n或$ nn
其中n或nn是十进制数字,插入第n个带括号的子匹配字符串,前提是第一个参数是RegExp对象.
因此,您$1将被替换为匹配的内容[^\w],$2并将替换为匹配的内容[\w\-]+.但是,我认为你想要在你的第一组中多一点,以便你可以正确匹配字符串"@pancakes",(^|\W+)这样可以更好地为你服务:
str = str.replace(/(^|\W+)\@([\w\-]+)/gm,'$1<a href="http://twitter.com/$2" target="_blank">@$2</a>');
Run Code Online (Sandbox Code Playgroud)
您可能想要阅读JavaScript正则表达式.
而且,感谢Kobi,您可以使用更简单的正则表达式,但您必须稍微更改替换项:
str = str.replace(/\B@([\w-]+)/gm, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');
Run Code Online (Sandbox Code Playgroud)
当它不能被误认为范围指示器时,你不需要逃避连字符.