我有文字3571157, 357-11-57, 357 11 57
我可以使用正则表达式\d{3}[-\s]?\d{2}[-\s]?\d{2}
但是我想要的是在所有情况下我的比赛都像3571157
。甚至可能吗?
P.S。我的意思是在正则表达式级别上,之后没有其他代码,以便在代码/[a-z-]+/.exec('ha-ha')[0]
中更清楚地说明我想输出haha
(与排除的-
字符匹配)
答案 0 :(得分:1)
是的,它是可行的。您可以使用 space 和-上的字符串替换来实现,例如:
>= 10
<=10
您可以使用this RegEx并首先匹配您的输入。
$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);
答案 1 :(得分:1)
没有标记的编程语言,但是如果您从字符串中找到匹配项,则可以使用\D+
将所有非数字替换为只保留数字的空字符串。
使用Javascript的示例:
let str = "3571157, 357-11-57, 357 11 57";
let pattern = /\d{3}[-\s]?\d{2}[-\s]?\d{2}/g;
console.log(str.match(pattern).map(s => s.replace(/\D+/g, '')));