正则表达式将大写字母转换为小写字母

6

是否有可能将正则表达式模式匹配转换为小写字母?

var pattern:RegExp;
var str:String = "HI guys";
pattern = /([A-Z]+)/g;
str = str.replace(pattern, thisShouldBeLowerCase);

输出应该像这样:"hi guys"

7个回答

7
您可以这样做,但需要将模式替换为您所需的内容:
public static function lowerCase(string:String, pattern:RegExp = null):String
{
    pattern ||= /[A-Z]/g;
    return string.replace(pattern, function x():String
    {
        return (arguments[0] as String).toLowerCase();
    });
}

trace(lowerCase('HI GUYS', /[HI]/g)); // "hi GUYS";

那个arguments变量是一个内部变量,引用函数参数。希望这有所帮助,
Lance

谢谢,我会尝试一下,但它看起来很有前途 :) - luccio

7
var html = '<HTML><HEAD><BODY>TEST</BODY></HEAD></HTML>';
var regex = /<([^>]*)>/g;
html = html.replace(regex, function(x) { return x.toLowerCase() });
alert(html);

4

转为小写

s/[A-Z]/\l&/g

转化为大写字母

s/[a-z]/\u&/g

1

在ActionScript 3中将所有大写英文字母转换为小写

var pattern:RegExp = /[A-Z]/g;
contentstr = contentstr.replace(pattern,function(a:String,b:int,c:String):String { return a.toLowerCase() } );

0

你可以将函数作为 string.replace 的第二个参数使用。

在你的情况下,你可以这样使用:

var pattern:RegExp;
var str:String = "HI guys";
pattern = /([A-Z]+)/g;
str = str.replace(pattern, function(search, match1) { 
   return match1.toLowerCase() }
);

在这里阅读更多相关信息 Javascript:如何将找到的string.replace值传递给函数?


0

不,使用正则表达式是不可能的。你只能一个一个地将 A 替换为 aB 替换为 b,以此类推。

为什么不直接使用 toLowerCase() 呢?


我想替换HTML标签,这些标签是大写的,但XHTML只允许小写标签,因此我需要将它们转换为小写。 - luccio

0
如果您想将完整字符串转换为小写,则在JavaScript中使用 .toLowerCase().toUpperCase()
如果您想要用小写字母替换字符串中的特定字母,则最好使用 Regex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接