我有以下代码:
if (preg_match('/^[A-Z]\./', $element['#title'])) {
$element['#title'] = preg_replace('/^[A-Z]\./', '<span>$0</span>', $element['#title']);
}
这将添加一个span标签,例如
<span>A.</span> This is a title
我现在有几个要匹配的字符串:
[A-Z]。
[A-Z]。[1-99]。
[A-Z]。[1-99]。[1-99]。
[A-Z]。[1-99]。[1-99]。[1-99]。
正则表达式不是我的强项!有人可以帮帮忙吗?
谢谢,
史蒂夫
答案 0 :(得分:1)
您可以使用此
^[A-Z]\.(?>[0-9]++\.?+)*
请注意,您之前不需要使用preg_match进行测试,因为preg_replace仅在找到内容时才进行替换:
$element['#title'] = preg_replace('~^[A-Z]\.(?>[0-9]{1,2}\.?+)*~', '<span>$0</span>', $element['#title']);
答案 1 :(得分:1)
基本上,你匹配一个大写字母,然后是一个句号;然后,可以跟随零到三次出现的数字后跟一段时间:
/^[A-Z]\.(?:\d+\.){0,3}/