我想知道,我的字符串應該有什麼正則表達式。我的字符串只能包含「|」和數字。
例如:「111 | 333 | 111 | 333」。字符串必須從數字開始。我正在使用此代碼,但他很醜:php正則表達式適用於「|」和數字
if (!preg_match('/\|d/', $ids)) {
$this->_redirect(ROOT_PATH . '/commission/payment/active');
}
在此先感謝您。對不起我的英語不好。
我想知道,我的字符串應該有什麼正則表達式。我的字符串只能包含「|」和數字。
例如:「111 | 333 | 111 | 333」。字符串必須從數字開始。我正在使用此代碼,但他很醜:php正則表達式適用於「|」和數字
if (!preg_match('/\|d/', $ids)) {
$this->_redirect(ROOT_PATH . '/commission/payment/active');
}
在此先感謝您。對不起我的英語不好。
看看你的例子,我假設你正在尋找一個匹配字符串的開始和結束與數字和數字是用|
分開的正則表達式。如果是這樣你可以使用:
^\d+(?:\|\d+)*$
說明:
^ - Start anchor.
\d+ - One ore more digits, that is a number.
(? ) - Used for grouping.
\| - | is a regex meta char used for alternation,
to match a literal pipe, escape it.
* - Quantifier for zero or more.
$ - End anchor.
的正則表達式是:
^\d[|\d]*$
^ - Start matching only from the beginning of the string
\d - Match a digit
[] - Define a class of possible matches. Match any of the following cases:
| - (inside a character class) Match the '|' character
\d - Match a digit
$ - End matching only from the beginning of the string
注:擺脫|
是不是在這種情況下,必要的。
僅包含|
或數字並以數字開頭的字符串被寫爲^\d(\||\d)*$
。這意味着:要麼\|
(注意逃跑!)或一個數字,寫作\d
,多次。
^
和$
意思是:從開始到結束,即在其之前或之後沒有其他字符。
我認爲/^\d[\d\|]*$/
會工作,但是,如果你總是有三個數字分隔的酒吧,你需要/^\d{3}(?:\|\d{3})*$/
。
編輯: 最後,如果您始終有一個或多個數字的序列由條分隔,則會執行:/^\d+(?:\|\d+)*$/
。
我知道OP並沒有真正指定它,但是這也可以允許像`123 || 456 |`這樣的序列(最後雙管和管道)。 – 2010-12-08 10:13:28