if (preg_match('/[^a-zA-Z]+/', $test4, $matches))
这将匹配任何非字母数字字符。我只希望在{ } [ ] * =
上匹配,无论顺序和它们之间的任何其他字符。可以这样做吗?
我试过\=, \[, \], \{, \}, \*
,但似乎没有帮助?
我有一个字符串,可能包含也可能不包含列出的字符。我想使用preg_match来确定字符串是否包含任何这些字符,无论字符串中的顺序或位置如何。
答案 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