-1

10 ~ 13 桁の数字と 0 ~ 3 個のスペースを含むことができる電話番号を検証したいと思います (データのどこにでも入る可能性があります)。方法を教えてください。

正常に動作する正規表現を使用してみ^(\d*\s){0,3}\d*$ましたが、合計文字数を 13 に制限する必要があります。

4

1 に答える 1

0

2 つの異なる行全体のパターンに対して同じテキストを一致させたいとします。

その結果、パターンを一致させることで達成できます。

$ cat file
1234567 90
1234567890
123 456 789 0123
123 456 789 01 23
$ sed -rn '/^([0-9] ?){9,12}[0-9]$/{/^([0-9]+ ){0,3}[0-9]+$/p}' file
1234567890
123 456 789 0123
$

または、正規表現エンジン (perl/"grep -P"/java/etc) が先読みをサポートしている場合 - パターンを組み合わせることができます:

// This is Java
Pattern p = Pattern.compile("(?=^([0-9] ?){9,12}[0-9]$)(?=^([0-9]+ ){0,3}[0-9]+$)^.*$");
System.out.println(p.matcher("1234567 90").matches());        // false
System.out.println(p.matcher("123 456 789 0123").matches());  // true
System.out.println(p.matcher("123 456 789 01 23").matches()); // false
于 2013-09-29T05:49:57.523 に答える