假設我們有一個輸入,它可能由一行或多行文本組成,並且所有行都必須遵守嚴格的格式。
number|any character(s)|number
前任。:
150|example.com/|2500
600|hello_world|1500
中間的字符可以包含任何字符,不包括空格。開頭和結尾的數字可以由一個或多個數字組成。
我想檢查文本中的所有行是否都符合所需的格式。
到目前為止,我想出了以下正則表達式,但true
即使只有一行與上面的格式匹配,它也會返回。
/[0-9]+\|.*?\|[0-9]/im
如何調整我的模式以驗證整個文本並true
從返回preg_match()
?
您可以使用
/\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!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句