2017-06-13 66 views
1

示例数据:正则表达式匹配hastag,提,URL和特殊字符的鸣叫

我总能在@gEmbul我们#kampus始终打开网站https://www.youtube.com/ Facebook的#:) @ 007

的日期是字符串,我想与符号@匹配,符号#,任何网址和特殊字符。

我会在hastag的前面和后面hastag

这是我的代码相匹配hastag#

var data = "I always meet @gEmbul at #kampus we always open the site https://www.youtube.com/ facebook# :) @007" 
 
function clean(data) { 
 
\t data = data.replace(/(?:https?|ftp):\/\/[\n\S]+/g, '') 
 
     .replace(/\B\@\w\w+\b/g, '') 
 
     .replace(/\B\#\w\w+\b/g, ''); 
 
\t return data; 
 
} 
 
console.log(clean(data))

我将返回

我总是在我们一直开着满足site

谢谢。

+0

尝试'替换(/(?: https?| ftp):\/\/[\ n \ S] + | \ B [@#] \ w + \ b | \ b \ w + [@#] \ B/g,'')'或'.replace(/(?: https?| ftp):\/\/[\ n \ S] + | \ B [@#] \ w + \ b | \ b \ w + [@#] \ B | \ B [^ \ w \ s] {2,} \ B/g,'')' - 见https://jsfiddle.net/48hmrse2/ –

+0

oke非常感谢您 – RayZal

+0

它按预期工作?我不确定笑脸\ B [^ \ w \ s] {2,} \ B'部分。 –

回答

1

我sugges萎缩的格局位(2点的正则表达式,你必须在短短1吨焦炭不同,可与[#@]字符类来完成,因为你删除的比赛,你可能只是一个|交替结合的正则表达式运营商):

var data = "I always meet @gEmbul at #kampus we always open the site https://www.youtube.com/ facebook# :) @007" 
 
function clean(data) { 
 
\t data = data.replace(/(?:https?|ftp):\/\/[\n\S]+|\B[@#]\w+\b|\b\w+[@#]\B|\B[^\w\s]{2,}\B/g, ''); 
 
\t return data; 
 
} 
 
document.body.innerHTML = clean(data);

详细

  • (?:https?|ftp):\/\/[\n\S]+ - 或
  • \B[@#]\w+\b - - 一个@#随后用1+字字符(作为一个整体的字)
  • | - 匹配的可以通过新行
  • |跨越一个URL一个正则表达式或
  • \b\w+[@#]\B - 1+字字符,接着用@#(作为一个整体的字)
  • | - 或
  • \B[^\w\s]{2,}\B - 非单词边界,除了单词和空白之外的两个或更多个字符,并且也是非单词边界。删除\B以在任何情况下匹配2个或更多非空白/非字词字符。
+1

oke非常感谢你。 – RayZal