删除名称

时间:2016-01-18 03:56:03

标签: javascript jquery

我有一个使用JavaScript @mention库的评论表单,它允许我将一些评论文本保存到我的服务器,如'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)'

当我在页面上显示评论HTML时,我只需要名称而不是用户ID ... 'This is a message for @Kenneth Auchenberg and @JasonDavis'

我需要转换此字符串...

var commentStr = 'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)';

进入这个字符串......

var cleanCommentStr = 'This is a message for @Kenneth Auchenberg and @JasonDavis';

如何使用JavaScript删除包含在名称周围的不良字符?

更新

我可能只是采用不同的方法,并在我的注释数据库表中添加一个新列,以保存@的用户列表,然后在保存注释文本之前从注释中删除这些内容。创建评论时我真的只需要用户ID,因此我可以为该用户生成通知。之后我可以在评论文本中显示用户名。

1 个答案:

答案 0 :(得分:3)

您可以将String#replace与RegEx一起使用。

RegEx101 Live Demo

/@\[([\w\s]+)\][^)]+\)/

RegEx说明:

  1. @\[([\w\s]+)\]:匹配@[后跟任何字母数字字符,下划线和空格一次或多次,然后跟]。括号()用于将用户名放在第一个捕获的组中 - $1
  2. [^)]+\):匹配任何内容,直到)。因此,在@[blah blah]
  3. 之后匹配括号内的字符串
  4. g:全球旗帜。
  5. Regex Visualization

    替换@$1@[blah blah](anything)替换@blah blah。这里$1是第一个被捕获的组,即方括号内的字符串。

    <强>演示:

    var commentStr = 'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)';
    
    commentStr = commentStr.replace(/@\[([\w\s]+)\][^)]+\)/g, '@$1');
    
    document.body.innerHTML = commentStr;