【问题标题】:Javascript replace() with case-change带有大小写更改的 Javascript replace()
【发布时间】:2009-06-11 15:06:50
【问题描述】:

有没有一种简单的方法可以更改使用 javascript 匹配字符串的大小写?

示例

字符串:<li>something</li>

正则表达式:/<([\w]+)[^>]*>.*?<\/\1>/

我想做的是将匹配 $1 替换为所有大写字母(如果可能,在替换内)。我不完全确定 $1 何时是有效匹配项而不是字符串 - '$1'.toUpperCase 不起作用。

那么我将如何返回<LI>something</li>?方法,而不是正则表达式。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以将替换方法传递给替换函数。第一个参数是整个匹配,第二个参数是 $1。因此:

    mystring.replace(/<([\w]+)[^>]*>.*?<\/\1>/, function(a,x){ 
       return a.replace(x,x.toUpperCase()); 
    })
    

    虽然这种形式通过进行额外的捕获来节省额外的操作(应该更快但没有检查):

    mystring.replace(/<([\w]+)([^>]*>.*?<\/\1>)/, function(a,x,y){ 
       return ('<'+x.toUpperCase()+y); 
    })
    

    【讨论】:

      【解决方案2】:

      最简单的可能是使用正则表达式匹配,然后在匹配上使用 .toUpperCase。我稍微修改了正则表达式以添加第二个捕获组

      var str = '<li>something</li>';
      var arr = /<([\w]+)([^>]*>.*?<\/)\1>/.exec(str);
      str = '<' + arr[1].toUpperCase() + arr[2] + arr[1].toUpperCase() + '>';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        • 2014-06-15
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多