我试图用字符串开头的可选,破折号,点或空格替换数字,我的模式似乎不起作用。 我想替换它:
01. PHP
02 HTML5
03. - CSS3
与
PHP
HTML5
CSS3
我的代码如下:
$t = trim($_POST['test']);
$pattern = '/^[\d{0,4}(. -)?]/';
if(preg_match($pattern, $t)){
echo preg_replace($pattern,'', $t);
}else{
echo 'No';
}
答案 0 :(得分:4)
您的正则表达式 - {
- 匹配字符串的开头,然后 1个字符:数字,0
或,
,或}
,或(
,或)
,或点,或从空格到!"#$%&'
的范围(即空格)
还有一个preg_replace('/^[\d .-]+/','', $t);
或一个问号。所以,它只适用于您描述的有限数量的案例。
只需使用
^
在这里,
[\d .-]+
- 匹配字符串/行的开头(?m)
匹配数字,空格,点或连字符,1次或多次请参阅demo
Nogte如果你有多行,你需要preg_replace('/(?m)^[\d .-]+/','', $t);
修饰符。
u
注意:如果您打算从字符串开头删除任何不是字母的内容,我建议您使用^\P{L}+
regex f = either id (-1)
修饰符。
答案 1 :(得分:0)
可以尝试this
$t = "01. PHP";
$pattern = '/^[0-9\.\s\-]+/';
echo preg_replace($pattern, '', $t);
<强>输出强>
PHP
正则表达式解释
^ assert position at start of the string
0-9 a single character in the range between 0 and 9
\. matches the character . literally
\s match any white space character [\r\n\t\f ]
\- matches the character - literally
答案 2 :(得分:0)