常用正则式及其函数在JS和PHP中使用方法

常用正则式及其函数,在PHP中有两套正则表达式函数库。一套是由PCRE(Perl Compatible Regular Expression)库提供的,
其使用以“preg_”为前缀命名的函数。另一套是由POSIX(Portable Operation System interface)扩展库提供的,
一般使用以“ereg_”为前缀命名的函数。

常用正则式及其函数
0、正数:/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/
1、非负整数:^\d+$
2、正整数:^[0-9]*[1-9][0-9]*$
3、非正整数:^((-\d+)|(0+))$
4、负整数:^-[0-9]*[1-9][0-9]*$
5、整数:^-?\d+$
6、非负浮点数:^\d+(\.\d+)?$
7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
9、负浮点数:^(-((正浮点数正则式)))$
10、英文字符串:^[A-Za-z]+$
11、英文大写串:^[A-Z]+$
12、英文小写串:^[a-z]+$
13、英文字符数字串:^[A-Za-z0-9]+$
14、英数字加下划线串:^\w+$
15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
16、URL链接:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$或^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^<>\”\”])*$
17、邮政编码:^[1-9]\d{5}$
18、中文:^[\u0391-\uFFE5]+$
19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$
20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?1\d{10}$
21、双字节字符(包括汉字在内):^\x00-\xff
22、首尾空格:(^\s*)|(\s*$)
23、HTML标记:<(.*)>.*<\/\1>|<(.*) \/>
24、空行:\n[\s| ]*\r
25、链接href:(h|H)(r|R)(e|E)(f|F) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?
26、邮件:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
27、链接src:(s|S)(r|R)(c|C) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?
28、IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
29、手机(CN):(86)*0*13\d{9}
30、固定电话(CN):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
31、电话号码(CN):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
32、邮编(CN):[1-9]{1}(\d+){5}
33、浮点数:(-?\d*)\.?\d+
35、电话区号:/^0\d{2,3}$/
36、腾讯QQ:^[1-9]*[1-9][0-9]*$
37、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
38、帐号(中文、英文、数字及下划线):^[\u4e00-\u9fa5_a-zA-Z0-9]+$
39、日期:^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

JAVACRIPT中用法如下:

<script type="text/javascript">
    var exp = /(86)*0*13\d{9}/;
    if (exp.test(contact) == false) {
        alert("Please Enter A Valid Phone");
        return false;
    }
    
    var exp = /^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/;
    if(starttime.match(exp) == false) { 
        alert("Please Enter Valid Time");
        return false;
    }
</script>

PHP中用法如下:
在PHP中有两套正则表达式函数库。一套是由PCRE(Perl Compatible Regular Expression)库提供的,
其使用以“preg_”为前缀命名的函数。另一套是由POSIX(Portable Operation System interface)扩展库提供的,
一般使用以“ereg_”为前缀命名的函数。

1.preg_match (string $pattern, string $content [, array $matches])

<?php
    //需要匹配的字符串。date函数返回当前时间
    $content = "Current date and time is ".date("Y-m-d h:i a").", we are learning PHP together.";
    //使用通常的方法匹配时间
    if (preg_match ("/\d{4}-\d{2}-\d{2} \d{2}:\d{2} [ap]m/", $content, $m)) {
        echo "匹配的时间是:" .$m[0]. "\n";
    }
    //由于时间的模式明显,也可以简单的匹配
    if (preg_match ("/([\d-]{10}) ([\d:]{5} [ap]m)/", $content, $m)) {
    echo "当前日期是:" .$m[1]. "\n";
    echo "当前时间是:" .$m[2]. "\n";
}
?>

2.ereg()和eregi()
//文件内容的多行匹配

<?php
    //parse_ini_file()。该函数直接将*.ini文件解析到一个大数组中。
    $rows = file('php.ini');
    //循环遍历
    foreach($rows as $line) {
        if(trim($line)) {
            //将匹配成功的参数写入数组中
            if(eregi("^([a-z0-9_.]*) *=(.*)", $line, $matches)) {
                $options[$matches[1]] = trim($matches[2]);
            }
            unset($matches);
        }
    }
    //输出参数结果
    print_r($options);
?>

3.preg_grep (string $pattern, array $input)

<?php
    $subjects = array(
        "Mechanical Engineering", "Medicine",
        "Social Science", "Agriculture",
        "Commercial Science", "Politics"
    );
    //匹配所有仅由有一个单词组成的科目名
    $alonewords = preg_grep("/^[a-z]*$/i", $subjects);
?>

4.preg_match_all()

5.ereg_replace()和eregi_replace()

<?php
    //源代码的清理

    //将文件读入数组中
    $lines = file('source.php');
    for($i=0; $i<count($lines); $i++) {
        //将行末以“\\”或“#”开头的注释去掉
        $lines[$i] = eregi_replace("(\/\/|#).*$", "", $lines[$i]);
        //将行末的空白消除
        $lines[$i] = eregi_replace("[ \n\r\t\v\f]*$", "\r\n", $lines[$i]);
    }
    //整理后输出到页面
    echo htmlspecialchars(join("",$lines));
?>

6.preg_replace()

<?php
    //字符串
    $string = "Name: {Name}<br>\nEmail: {Email}<br>\nAddress: {Address}<br>\n";
    //模式
    $patterns =array(
        "/{Address}/",
        "/{Name}/",
        "/{Email}/"
    );
    //替换字串
    $replacements = array (
        "No.5, Wilson St., New York, U.S.A",
        "Thomas Ching",
        "tom@emailaddress.com",
    );
    //输出模式替换结果
    print preg_replace($patterns, $replacements, $string);
?>

7.split()和spliti(), preg_split()

<?php
    $date = "08/30/2006";
    //分隔符可以是斜线,点,或横线
    list($month, $day, $year) = split ('[/.-]', $date);
    //输出为另一种时间格式
    echo "Month: $month; Day: $day; Year: $year<br />\n";
?>
<?php
    $seek = array();
    $text = "I have a dream that one day I can make it. So just do it, nothing is impossible!";
    //将字符串按空白,标点符号拆分(每个标点后也可能跟有空格)
    $words = preg_split("/[.,;!\s']\s*/", $text);
    foreach($words as $val) {
        $seek[strtolower($val)] ++;
    }
    echo "共有大约" .count($words). "个单词。";
    echo "其中共有" .$seek['i']. "个单词“I”。";
?>

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。