搜索高位字母/单词的正则表达式?

时间:2012-03-17 09:26:57

标签: php regex

我有"X los(2) - XYZ tres"

之类的字符串

如何找到所有大写字母和单词并用随机数替换它们?

从第一个字符串开始,我应该"2 los(2) - 6 tres""9 los(2) - 5 tres"

我的意思是一个UPPER字应该变成一个数字。

4 个答案:

答案 0 :(得分:3)

我就是这样做的。

使用正则表达式查找大写字符组,并用09之间的随机数替换它们(十进制系统中的所有单个数字)。

$str = preg_replace_callback('/[A-Z]+/', function() {
     return rand(0, 9);
}, $str);

CodePad

答案 1 :(得分:1)

您可以使用preg_replace_callback查找大写字母并将其替换为随机数。

$text = "X los(2) - XYZ tres";

// the callback function
function replace_with_random($matches)
{
    return rand(0,9);
}

//perform the replacement
$text= preg_replace_callback(
            "/[A-Z]+/",
            "replace_with_random",
            $text);

回调可以检查匹配的文本以执行比随机更精细的替换 - 您会在$matches[0]

中找到匹配

答案 2 :(得分:1)

要兼容unicode,请使用unicode属性\p{Lu},表示任何语言的任何大写字母:

$str = preg_replace_callback('/\p{Lu}+/', function() {
     return rand(0, 9);
}, $str);

答案 3 :(得分:0)

试试这个

preg_replace_callback('/([A-Z]+)/', function(){
    return mt_rand(0, 9);
},  "X los(2) - XYZ tres");