假設我們有一個輸入,它可能由一行或多行文本組成,并且所有行都必須遵守嚴格的格式。
number|any character(s)|number
前任。:
150|example.com/|2500
600|hello_world|1500
中間的字符可以包含任何字符,不包括空格。開頭和結尾的數字可以由一個或多個數字組成。
我想檢查文本中的所有行是否都符合所需的格式。
到目前為止,我想出了以下正則運算式,但true即使只有一行與上面的格式匹配,它也會回傳。
/[0-9] \|.*?\|[0-9]/im
如何調整我的模式以驗證整個文本并true從回傳preg_match()?
uj5u.com熱心網友回復:
您可以使用
/\A([0-9] \|\S*\|[0-9] )(?:\R(?1))*\z/
請參閱正則運算式演示。詳情:
\A- 字串的開始([0-9] \|\S*\|[0-9] )- 第 1 組:一位或多位數字、|任何零個或多個非空白字符,盡可能多|,以及一位或多位數字(?:\R(?1))*- 零次或多次重復換行,然后是第 1 組模式\z- 字串的結尾。
請參閱PHP 演示:
$text = "150|google.com/|2500\n600|hello_world|1500";
if (preg_match('~\A([0-9] \|\S*\|[0-9] )(?:\R(?1))*\z~', $text)){
echo "Valid!";
}
// => Valid!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347467.html
上一篇:在React中驗證字串陣列
