【问题标题】:Optimizing Regex for removing classes优化正则表达式以删除类
【发布时间】:2014-11-12 19:31:37
【问题描述】:

我有这个函数用来从 javascript 中的元素中删除类。

var reg = new RegExp(cls+'(\\s|$)');
this.el.className = this.el.className.replace(reg, '').replace(/\s+$/g, '');

假设你在一个元素上有三个类

show hide color

前两个和后面的空格一起被删除,第三个被删除,但由于它后面没有空格,所以它留下了前面的空格。然后字符串在末尾有一个额外的空格。所以我添加了第二个替换功能来摆脱它,但它只在一种情况下使用

问题:我如何摆脱第二个替换功能并让一个正则表达式做我想做的事。谢谢!

【问题讨论】:

  • 你想做什么,删除所有类(element.className = '';/element.setAttribute('class','');)?或者删除一个特定的类 (el.classList.remove('color');)?
  • 对不起,我正在尝试删除某个类(因此正则表达式中的 cls 变量)。 classList 不可靠,所以我不使用它。
  • 正则表达式是正确的。唯一的原因可能是因为show之前有一个空格或color之后有两个空格
  • @vks 是的,它正在按我的需要工作,但我正试图摆脱调用替换函数两次的需要。
  • 如果字符串是 jsut show hide color,则该空格不存在。还有其他东西你丢失了

标签: javascript regex


【解决方案1】:

也许您可以处理所有情况。

 #  (?:\s(?:show|hide|color)|(?:show|hide|color)\s|\b(?:show|hide|color)\b)

 (?:
      \s 
      (?: show | hide | color )
   |  
      (?: show | hide | color )
      \s 
   |  
      \b                          # Or ^
      (?: show | hide | color )
      \b                          # Or $
 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多