簡體   English   中英

正則表達式幫助

[英]Regular expressions help

我正在嘗試在php中編寫一個正則表達式,以檢查以確保傳入的字符串是三件事之一,但是,我遇到了麻煩(我確實在使用正則表達式感到困難)。

我需要確保接收到的參數包含以下三項之一,並且沒有其他內容:

  1. “|” 就是一個管道或
  2. “”,那就是一個空字符串,或者
  3. “| 1 | 534 | 3453 | 23 | 213 | 2 |” 一個長字符串,它使用管道作為一系列數字的定界符

謝謝您的幫助(這對我來說一直是一個問題,認為我需要專門購買正則表達式的書)

preg_match('/^(?:\|(?:\d+\|)*)?$/', $input);

最簡單的方法是將其分為三個獨立的檢查:

  1. 該字符串只是單個管道( strcmp($str,"|") == 0
  2. 字符串為空( strlen($str) == 0 )。
  3. 字符串匹配正則表達式/^[0-9\\|]+$/

通過嘗試將所有這些檢查都塞進一個正則表達式中,不要比需要做的難。 您的代碼將更容易理解,以后的代碼維護者將感謝您。

編輯:僅顯示我在說什么,這里是一些示例代碼:

if( strcmp($str,"|") == 0 ||
    strlen($str) == 0     ||
    preg_match('^[0-9\|]+$', $str) {
  ...
}

VS

if( preg_match('/^(?:\|(?:\d+\|)*)?$/', $str ) {
  ...
}

一目了然,如果$str為空,哪個執行...

(^(\\ |)([0-9 \\ |] {0,})(\\ |)$)|(^(\\ |)$)|()

使用上面的正則表達式,如果沒有算術,則您的字符串無效,請檢查其合法性,然后嘗試檢查str_len($ string)> 0是否為空,然后檢查正則表達式

暫無
暫無

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

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