正则表达式:检测特定字符串

时间:2012-05-23 15:43:19

标签: php regex preg-match

我正在尝试使用preg_match()在PHP中搜索字符串,以返回格式为“xdr”的字符串,其中x是单个数字。

该字符串由字符,数字,'。'组成。句号和空格。

我对正则表达式毫无希望,有人可以帮助我吗?

我已经尝试了^([a-zA-Z0-9]+)\s2dr$,但它不起作用

例如,字符串可能看起来像A really big 2.0 was 3dr once

2 个答案:

答案 0 :(得分:2)

据我了解您的需求,此正则表达式将匹配包含一些数字后跟dr的字符串:

 /\b\d+dr\b/

preg_match中的行动:

preg_match('/\b\d+dr\b/', $string);

<强>解释

/      : regex delim
  \b   : word boundary
  \d+  : one or more digit
  dr   : literaly dr
  \b   : word boundary
/      : regex delim

如果您希望其他字符仅为characters, numbers, '.' full stops and spaces,请使用此选项:

preg_match('/^[\w\d. ]*\b\d+dr\b[\w\d. ]*$/', $string);

并且,兼容unicode:

preg_match('/^[\pL\pN. ]*\b\pN+dr\b[\pL\pN. ]*$/', $string);

答案 1 :(得分:0)

你很亲密。

以下正则表达式将匹配单个数字,后跟一个或多个字母字符,数字,句点和空格,并以dr结尾。

^\d[a-zA-Z0-9. ]+dr$

注意:不确定您是否希望文字dr,如果没有,请将其从最后删除。