2013年1月7日月曜日

開発環境

『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の付録B(正規表現の基本)B.8(演習問題)1を解いてみる。

1.

HTML、PHPのソースコード(BBEdit)

sample113.php

<?php
   $numbers = array( "(718) 498-1043",
                     "(718) 498 1043",
                     "718 498 1043",
                     "718 498-1043",
                     "718-498-1043",
                     "718.498.1043",
                     "php",
                     1234567890,
                     12345);
  foreach($numbers as $key => $value){
    if(preg_match("/^\(?\d{3}\)?[- \.]?\d{3}[- \.]?\d{4}$/", $value)){
      print "Matched!: " ;
    } else {
      print "No match: ";
    }
    print $value . "<br />";
  }
?>

ちなみにJavaScriptの場合。

コード(BBEdit)

var numbers = ["(718) 498-1043",
               "(718) 498 1043",
               "718 498 1043",
               "718 498-1043",
               "718-498-1043",
               "718.498.1043",
               "php",
               1234567890,
               12345];
var result = ""
for(var i = 0; i < numbers.length; i++){
  if(/^\(?\d{3}\)?[- \.]?\d{3}[- \.]?\d{4}$/.test(numbers[i])){
    result += "Matched: ";
  } else {
    result += "No match: "
  }
  result += numbers[i] + "\n";
}
$('#pre0').text(result);


pythonの場合。

sample.py

コード(BBEdit)

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import re

numbers = ["(718) 498-1043",
            "(718) 498 1043",
            "718 498 1043",
            "718 498-1043",
            "718-498-1043",
            "718.498.1043",
            "php",
            1234567890,
            12345];
for x in numbers:
    if type(x) != str: x = str(x)
    if re.search(r"^\(?\d{3}\)?[- \.]?\d{3}[- \.]?\d{4}$", x):
        print("Matched: {0}".format(x))
    else:
        print("No match: {0}".format(x))

入出力結果(Terminal)

$ ./sample.py
Matched: (718) 498-1043
Matched: (718) 498 1043
Matched: 718 498 1043
Matched: 718 498-1043
Matched: 718-498-1043
Matched: 718.498.1043
No match: php
Matched: 1234567890
No match: 12345
$

0 コメント:

コメントを投稿