我有文字3571157, 357-11-57, 357 11 57
我可以使用正则表达式\d{3}[-\s]?\d{2}[-\s]?\d{2}
捕获这些数字
但是我想要的是在所有情况下我的比赛都看起来像3571157
。可能吗?
附言我的意思是在正则表达式级别上,之后没有其他代码,以使代码/[a-z-]+/.exec('ha-ha')[0]
中的内容更加清晰:我要输出haha
(与排除的-
字符匹配)
最佳答案
是的,这是可行的。您可以使用空格和-的字符串替换来实现,例如:
$input = '3571157, 357-11-57, 81749 91741 9080, 81749 91741 9080, 81749 91741 9080 ,357 11 57, 81749 91741 9080';
$split_inputs = preg_split('/,/s', $input);
$output = '';
foreach ($split_inputs as $key => $value) {
$match = preg_match('/^[0-9 \-]{7,9}$/s', trim($value));
if (!$match) {continue;}
$output .= preg_replace('/-|\s/s', '', $value);
if (sizeof($split_inputs) - 1 - $match != (int) $key) {
$output .= ", ";
}
}
var_dump($output);
输出量
string(25) "3571157, 3571157, 3571157"
您可以使用this RegEx并首先匹配您的输入。
^[0-9\s\-]{7,9}$