@ 2022-04-20T17:35:29Z <?php
$re = '~(*UTF)
x (?<!\w.) [\d._ –-]* (*SKIP) (*F)
|
order (?<!\worder) [\W_]* (?:number)? [\W_]* [\d._ –-]* (*SKIP) (*F)
|
(?<res>[1234578]
(?>[._ –-]{0,3}\d){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){2} )
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){4}
|
(?<res>0
(?> 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){2})
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){4}
|
(?<res>6
(?> 66 [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){2})
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?>[._ –-]{0,3}\d){4}
|
9 [\d._ –-]* (*SKIP) (*F)~ixJ';
$str = '//won\'t match if it is preceded with \'X\' or \'x\'
x123456789
X123456789
x123-456-789
X123-456-789
123-456-789
ordernumber 123-456-789
order number123-456789
order number----123-456789
order number 123456789
ordernumber-x123456787
ordernumber-123456787
ORDERNUMBER-123456789
ordernumber - 123456789
ordernumber #123456789
ordernumber *%&%*123456789
ordernumber !@#$%^&123456789
order.number 123456789
order_number 123456789
order._.number 123456789
order...number#123456789
order-.-.-.-.123456789
order 123456789
order..123456789
order#123456789
order_#123456789
order._.#123456789
order___123456789
order#number 123456789
order......number 123456789
order.number.123456789
social security number 123-456-789
ordernumber !@#$%^&x123456789
123456789
#@%#$%#$123456789#$%#$^$#
123-456789
123456789
123456789
123 45 6789
123-45-6789
123-45-6789
123 – 45 – 6789
123.45.6789
123_45_6789
123 456 789
123-456-789
123 – 456 – 789
123.456.789
123_456_789
1234 56 789
1234-56-789
1234 – 56 – 789
1234.56.789
1234_56_789
12 345 6789
12-345-6789
12 – 345 – 6789
12.345.6789
12_345_6789
The number should not be matched at all for the following rules.
If the number beginning with the number “9”
912345678
912000000
If the number “666” in positions 1 – 3.
666000000
666450000
666129876
If the number “000” in positions 1 – 3.
000000000
000450000
000120000
If the number “00” in positions 4 – 5.
123006789
876001234
765003456
if the number “0000” in positions 6 – 9
123450000
123000000
876000000
x123456789
X123456789
x123-456-789
X123-456-789
';
$n = 10000;
$re2 = '/\b(?>x|order(?>[\W_]*number)?[\W_]*)\d+(*SKIP)(*F)|(?=(?>[._ –-]*\d){9})(?>(?>9|6{3}|0{3}|(?>\d\D*){3}00|(?>\d\D*){5}0{4})(*SKIP)(*F)|\d(?>\D*\d){4})/mi';
$start = microtime(true);
for($i=0; $i<$n; $i++) {
preg_match_all($re2, $str, $matches, PREG_SET_ORDER);
}
$time2 = microtime(true) - $start;
$start = microtime(true);
for($i=0; $i<$n; $i++) {
preg_match_all($re, $str, $matches, PREG_SET_ORDER);
}
$time1 = microtime(true) - $start;
$re3 = '/(\border\D*\W*)\d+(*SKIP)(*F)|(\border\D*number\W*)\d+(*SKIP)(*F)|(?<!x)(?=(?:[._ –-]*\d){9})(?!9|66\D*6|00\D*0|(?:\d\D*){3}0\D*0|(?:\d\D*){5}0(?:\D*0){3})\d(?:[._ –-]*\d){4}/mi';
$start = microtime(true);
for($i=0; $i<$n; $i++) {
preg_match_all($re3, $str, $matches, PREG_SET_ORDER);
}
$time3 = microtime(true) - $start;
$re4 = '~(*UTF)
x (?<! \w x ) [\d._ –-]* (*SKIP) (*F)
|
order (?<! \w order ) [\W_]* (?:number)? [\W_]* [\d._ –-]* (*SKIP) (*F)
|
[1-578]
(?:[._ –-]{0,3}+\d){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?:[._ –-]{0,3}+\d){2}
(?=
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?:[._ –-]{0,3}+\d){4}
)
|
0
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){2}
(?=
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){4}
)
|
6
(?: 6{2} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){2}
(?: 0{2} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){2}
(?=
(?: 0{4} [\d._ –-]* (*SKIP) (*F) )?
(?: [._ –-]{0,3}+ \d ){4}
)
|
9 [\d._ –-]* (*SKIP) (*F)
~ix';
$start = microtime(true);
for($i=0; $i<$n; $i++) {
preg_match_all($re4, $str, $matches, PREG_SET_ORDER);
}
$time4 = microtime(true) - $start;
printf("Casimir: %.2e\nAnubhava: %.2e\nKamesh: %.2e\nCasimir (la): %.2e", $time1, $time2, $time3, $time4);
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.1.12 0.007 0.472 19.00 8.1.11 0.007 0.487 18.96 8.1.10 0.016 0.463 18.93 8.1.9 0.013 0.475 19.01 8.1.8 0.012 0.464 18.85 8.1.7 0.010 0.471 19.01 8.1.6 0.007 0.470 19.02 8.1.5 0.009 0.490 18.13 8.1.4 0.017 0.471 19.04 8.1.3 0.013 0.502 19.07 8.1.2 0.013 0.477 19.06 8.1.1 0.017 0.466 19.08 8.1.0 0.017 0.464 18.94 8.0.25 0.017 0.468 18.38 8.0.24 0.007 0.476 18.26 8.0.23 0.007 0.495 18.42 8.0.22 0.016 0.448 18.22 8.0.21 0.010 0.471 18.27 8.0.20 0.010 0.486 18.37 8.0.19 0.013 0.457 18.23 8.0.18 0.013 0.445 18.35 8.0.17 0.007 0.491 18.33 8.0.16 0.010 0.459 18.46 8.0.15 0.017 0.470 18.29 8.0.14 0.013 0.453 18.30 8.0.13 0.016 0.467 18.34 8.0.12 0.016 0.457 18.15 8.0.11 0.010 0.457 18.18 8.0.10 0.017 0.450 18.26 8.0.9 0.007 0.480 18.18 8.0.8 0.007 0.468 18.30 8.0.7 0.020 0.464 18.24 8.0.6 0.003 0.479 18.29 8.0.5 0.007 0.477 18.34 8.0.3 0.016 0.471 18.31 8.0.2 0.010 0.454 18.37 8.0.1 0.013 0.464 18.42 7.4.33 0.007 0.466 15.55 7.4.32 0.010 0.459 18.01 7.4.30 0.013 0.461 18.04 7.4.29 0.010 0.475 18.07 7.4.28 0.017 0.463 17.93 7.4.27 0.016 0.454 17.95 7.4.26 0.013 0.463 17.92 7.4.25 0.007 0.467 18.02 7.4.24 0.010 0.466 18.00 7.4.23 0.010 0.453 17.93 7.4.22 0.007 0.468 18.02 7.4.21 0.003 0.461 18.00 7.4.20 0.016 0.494 18.01 7.4.19 0.009 0.456 17.89 7.4.18 0.013 0.463 18.02 7.4.16 0.017 0.480 18.12 7.4.15 0.010 0.463 18.07 7.4.14 0.010 0.483 18.04 7.4.13 0.023 0.455 17.95 7.4.12 0.020 0.448 17.83 7.4.11 0.010 0.460 18.00 7.4.10 0.007 0.464 17.96 7.4.9 0.007 0.467 18.05 7.4.8 0.007 0.457 17.95 7.4.7 0.000 0.488 17.96 7.4.6 0.007 0.452 19.66 7.4.5 0.003 0.450 17.84 7.4.4 0.007 0.445 17.88 7.4.3 0.003 0.443 17.77 7.4.2 0.000 0.452 17.96 7.4.1 0.013 0.434 17.94 7.4.0 0.010 0.423 17.89
preferences:dark mode live preview ace vim emacs key bindings
26.48 ms | 403 KiB | 5 Q