如何在特定长度和模式上使用preg_match()/ preg_replace()

时间:2014-03-05 17:57:38

标签: php preg-replace

我很难理解这一点,有人可以解释一下吗?

我非常担心在我的网站上清理数据并且我想加倍努力并剥离那些不应该存在的东西。这是一个例子我最终处理了很多十六进制值,这些值只包含连字符,数字和字母A到F这样的字符串

7d43637d-780c-4703-8467-13525d590

我将如何编写一个可以检查的preg_match / replace 8个字符'0-9''A-F''a-f',连字符,4个字符,连字符,4个字符,连字符,4个字符,连字符,9个字符?

它会有点像这样吗?

pre_replace("/([0-9a-fA-F]{8})\/([-])\/([0-9a-fA-F]{4})\/([-])\/([0-9a-fA-F]{4})\/([-])\/([0-9a-fA-F]{4})\/([-])\/([0-9a-fA-F]{9})\", "", $string);

对不起它太长而且令人困惑,我绝对愿意接受其他想法来实现这个目标。

我还需要一个可以检查'A-Z''a-z''0-9'' - ''_'和32个字符

我真的希望有一个在线生成器,也许如果我能理解它是如何完成的,我会为其他可怜的灵魂建立一个。


修改

使用AbraCadaver的代码我能够使用

使其工作
if(!preg_match("/[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{9}/i", $string)){
    echo 'error';
} else {
    //continue code
}

1 个答案:

答案 0 :(得分:4)

你很近但有很多需要。此外,i使其不区分大小写(A或a):

"/[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{9}/i"

Regular expression visualization

Debuggex Demo

if(!preg_match("/[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{9}/i", $string)) {
    echo "Invalid string";
}
相关问题