preg_match匹配特定字符= {} [] *

时间:2013-04-29 17:00:48

标签: php regex pattern-matching

if (preg_match('/[^a-zA-Z]+/', $test4, $matches))

这将匹配任何非字母数字字符。我只希望在{ } [ ] * =上匹配,无论顺序和它们之间的任何其他字符。可以这样做吗?

我试过\=, \[, \], \{, \}, \*,但似乎没有帮助?

我有一个字符串,可能包含也可能不包含列出的字符。我想使用preg_match来确定字符串是否包含任何这些字符,无论字符串中的顺序或位置如何。

2 个答案:

答案 0 :(得分:2)

这样做你想要的吗?

if (preg_match ('/[{}\[\]=*]+/', $test4, $matches))

如果您想查找所有匹配项而不是第一项匹配项,则应使用preg_match_all

答案 1 :(得分:0)

除了等号外,这些字符是正则表达式中的控制字符。你必须以不同的方式对待它们。

我建议您阅读PCRE Regex Syntax

要想得到你想要的东西,试试这个。

preg_match('/\[(.*)\]/', $test4, $square_matches);
preg_match('/\{(.*)\}/', $test4, $curly_matches);

// or, if this is your approach (it's hard to tell from your description)
preg_match('/([\[\{=\*](.*)[\]\}=\*])/', $test4, $matches);
preg_match('/([\[\{=\*](.*?)[\]\}=\*])/', $test4, $matches); //non-greedy