[英]Regex and preg_match
我想做一個正則表達式來匹配以下字符串之一: add
, delete
, edit
, read
。
我的正則表達式只接受以下字符串(不包括其他字詞):
add
delete
edit
read
,
這是我當前的正則表達式,但無法正常工作:
#(add|delete|read|edit),#
編輯
我想讓我的preg_match返回true,如果在我的字符串中它們是:
read
delete
add
edit
,
如果它們是其他單詞或符號,則返回false。
謝謝大家
似乎您犯了一個小錯誤。 該模式基本上應該可以工作。 例:
$str = <<<EOF
add, delete foo edit read bar add
hello world
EOF;
preg_match_all('#add|delete|read|edit|,#', $str, $matches);
var_dump($matches);
輸出:
array(1) {
[0] =>
array(6) {
[0] =>
string(3) "add"
[1] =>
string(1) ","
[2] =>
string(6) "delete"
[3] =>
string(4) "edit"
[4] =>
string(4) "read"
[5] =>
string(3) "add"
}
}
試試這個:
^(?:(?:add|delete|read|edit)|,)$
我使用了一個小組,首先將選擇限制為您的單個字符串,然后將錨點^
和$
為要測試的字符串中沒有其他對象。
$words = array('add', 'delete', ',', 'reading', 'edit', 'read', 'gedit');
foreach ($words as $word) {
if (preg_match('#^(?:(?:add|delete|read|edit)|,)$#', $word)) {
echo "$word: Matched!\n";
} else {
echo "$word: Not matched!\n";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.