Regexp - 如何检查字符串是否以给定字符开始或结束?

时间:2015-05-29 14:52:28

标签: php regex string preg-match

以该字符开头和结尾的字符串不应该匹配。

最简单的做法是:

$string = '!test';
preg_match('/^(!?)([a-z0-9]{1,10})(!?)$/i', $string, $matches);

并检查$ matches?

1 个答案:

答案 0 :(得分:3)

如果你在开头或结尾只有一个角色,就像说这个一样简单:

/^!|!$/

无需捕获组。

更新:要确保您获得感叹号和十个字母十个字母和一个感叹号,请构建您的模式这样:

/^!?[a-z0-9]{1,10}$|^[a-z0-9]{1,10}!?$/

看起来它正在重演,但它实际上比拥有三个捕获组更便宜,更快。

我把a unit test in regex101 for this放在一起。