簡體   English   中英

正則表達式和preg_match

[英]Regex and preg_match

我想做一個正則表達式來匹配以下字符串之一: adddeleteeditread

我的正則表達式只接受以下字符串(不包括其他字詞):

    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)|,)$

regex101演示

我使用了一個小組,首先將選擇限制為您的單個字符串,然后將錨點^$為要測試的字符串中沒有其他對象。

$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";
    }
}

ideone演示

^(?:add|delete|read|edit)$

那些哈希在那里做什么?

在這里演示

http://regex101.com/r/zX2yU8

暫無
暫無

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

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