簡體   English   中英

preg_match對長正則表達式不起作用

[英]preg_match not working on long regular expressions

我想在php中使用preg_match匹配關鍵字。 正則表達式可以在www.regexr.com上正常運行,但不能在我的php代碼中使用。 有人可以幫忙。 謝謝。

<?php

$regexx="/[sS]+([\s\t\r]*[\.\~\`\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\{\}\;\:\"\'\\\|\,\.\<\>\/\?\d\w]*)+[hH]+([\s\t\r]*[\.\~\`\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\{\}\;\:\"\'\\\|\,\.\<\>\/\?\d\w]*)+[aA]*([\s\t\r]*[\.\~\`\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\{\}\;\:\"\'\\\|\,\.\<\>\/\?\d\w]*)+[rR]*([\s\t\r]*[\.\~\`\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\{\}\;\:\"\'\\\|\,\.\<\>\/\?\d\w]*)+[eE]*
/";
if (preg_match($regexx, "S-hare"))
{
    echo 'succeeded';
}
else
{
    echo 'failed';
}

?>

根據您的評論:

我想以任何格式匹配“共享”一詞。 例如,..“共享”之間的任何特殊字符或空格都將被檢測到。

我建議刪除所有非字母字符,然后匹配剩余的字符。

var_dump($str = preg_replace("/[^a-z]/i", "", "sh@a/#~r:  e !!!"));
var_dump($str === "share");

原始的單個正則表達式解決方案可以是:
/[^az]*s[^az]*h[^az]*a[^az]*r[^az]*e[^az]*/i
簡單共享和[^az]*可匹配每個字母之間的任何非字母系列字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM