【问题标题】:how to remove non 'ui-*' words by invoking str.replace() with regexp如何通过使用正则表达式调用 str.replace() 来删除非 'ui-*' 单词
【发布时间】:2009-07-15 16:22:35
【问题描述】:

在 Javascript 中,

str = 'left ui-tabs ui-widget ui-widget-content center right';

是否可以通过使用正则表达式调用 str.replace() 来删除非 'ui-*' 单词?

调用 str.replace() 后的结果应该是:

str.replace(/ /, '') = 'ui-tabs ui-widget ui-widget-content';

我尝试了一些正则表达式模式,但它们不起作用。

【问题讨论】:

  • 我尝试的模式是: /\b(?!ui-)[\S]+\b/g 但它不起作用,因为 "\b" 也会将 "-" 视为一个词的边界。

标签: javascript regex


【解决方案1】:

可以试试这样的:

str.match(/ui-[\w-]+/g).join(" ")

【讨论】:

  • 工作正常。但是,假设原始字符串中的单词被一个空格分隔。如果不是这样,则 join() 结果将与用户在删除非 'ui-' 单词后所期望的结果不同。
  • 这个假设似乎是恰当的,因为本例中的str 可能是某些 DOM 节点的 className 属性的内容,并且 Kieran 正在寻求通过该属性进行一些不显眼的小部件配置。跨度>
  • @Vijay Dev:没错,但这并不重要。这些是类名。有些是 jquery ui 类。加入单个空间可以达到相同的结果。如果你看看提问者想要什么,这就很好地实现了。
  • @Justin,@George:同意。使用的上下文使空格无关紧要。
【解决方案2】:

必须是正则表达式吗?您可以这样做,但 split/join 在这里似乎是更好的选择。

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多