与排除的字符匹配

时间:2019-04-24 21:31:22

标签: javascript regex

我有文字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(与排除的-字符匹配)

2 个答案:

答案 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);

enter image description here

答案 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, '')));