0

已编辑

我用谷歌搜索为我的网络应用程序编写了一个自定义正则表达式,但我仍然无法得到我想要的。

我想检查一个字符串是否通过这个模式:

*STRING*STRING INCLUDING ALL CHARS*STRING INCLUDING ALL CHARS#

例如:

*STRING*the first string تست یک*the second string تست دو#

应该返回 TRUE

*sdsdsd*the first string تست یکthe second string تست دو#

应该返回 FALSE(因为它不是 *STRING*STRING*STRING# 的模式)

$check = preg_match("THE RULE", $STRING);

我在这里要求规则,如果我以错误的方式提出问题,对不起......

4

2 回答 2

2

不需要正则表达式,使用filter_var()

function checkEmail($str){
    $exp = explode('*', $str);
    if(filter_var($exp[1], FILTER_VALIDATE_EMAIL) && $exp[2] && $exp[3] && substr($str, strlen($str)-1, strlen($str)) == '#') {
        return true;
    }
    return false;
}

$valid = checkEmail('*example@example.com*the first string تست یک*the second string تست دو#');
于 2012-09-24T10:59:45.803 回答
1

检查字符串是否具有此模式*STRING*STRING*STRING#

if (preg_match(
    '/^       # Start of string
    \*        # Match *
    ([^*]*)   # Match any number of characters except *
    \*        # Match *
    ([^*]*)   # Match any number of characters except *
    \*        # Match *
    ([^#]*)   # Match any number of characters except #
    \#        # Match #
    $         # End of string/x', 
    $subject, $matches))

然后使用

filter_var($matches[1], FILTER_VALIDATE_EMAIL)

检查第一组是否可能包含电子邮件地址。

于 2012-09-24T11:06:44.913 回答