当前位置:首页 » 好文分享 » 详情

    分析百度移动适配正则表达式代码详解

    智能手机的普及乃至泛滥,致使网站移动端的流量暴涨,甚至于大大超越PC端的流量。网站移动适配迫在眉睫。博客之家为您提供百度移动适配正则表达式代码详解。

    移动适配涉及正则表达式,但由于很多站长并非技术出身,所以在为网站做移动适配的时候总是力不从心,甚至于一筹莫展。一个福音是,百度一直不断在降低适配的难度,这一次还急站长之所急,在站长平台提供了移动适配中可能使用到的各种正则表达式代码。博客之家详解了各种正则表达式中字符所代表的含义,让各位站长知其所以然。

    正则表达式规则、详解和示例代码

    1、纯数字适配规则:([0-9]+)或(\d+)

    解释:

    方括号:[]表示字符组,作用是匹配其中一个。如:[1234]代表匹配1、2、3、4四个数字中的一个。

    连字符:-表示一个范围。如:[1-4]等价于[1234]、[a-z]等价于[abcdefghijklmnopqrstuvwxyz]。

    加号:+表示与之紧邻的元素必须出现一次或者多次。如:[0-9]+代表匹配至少2个数字以上的纯数字组合。比如:01、10、100、1232、134341324132……

    \d:Perl等编程语言中用\d代表纯数字,算是一种简化。所以[0-9]等价于\d。

    括号:()划定多选结构的范围。在百度移动适配中所有的正则表达式都需包含在()中。

    纯数字移动适配示例:

    http://www.baidu.com/123456.html -> http://m.baidu.com/123456.html

    适配规则:

    http://www.baidu.com/([0-9]+).html或者http://www.baidu.com/(\d+).html -> http://m.baidu.com/${1}.html

    2、纯字母适配规则:([a-zA-Z]+)

    解释:与纯数字一样。这里面包含大小写字母。里面的顺序无所谓,也可以写成([A-Za-z]+)。

    [a-zA-Z]等价于[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]。

    [a-zA-Z]+代表匹配至少2个字母以上的纯字母组合。比如:aa、BB、aBc、AzdbD……

    纯字母移动适配示例:

    http://www.baidu.com/abcd.html -> http://m.baidu.com/abcd.html

    适配规则:

    http://www.baidu.com/([a-z]+).html -> http://m.baidu.com/${1}.html

    3、字母与数字混合适配规则:([a-zA-Z0-9]+)或(\w+)或((?:[a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)[a-zA-Z0-9]+)。

    解释:严格来讲[a-zA-Z0-9]+可以匹配纯字母、纯数字和字母与数字的混合。

    竖线|:匹配任意子表达式,也称为多选分支,可以用()来划定多选结构的范围。如h(a|e)llo,可以匹配:hallo,hello。

    \w:Perl等编程语言中用\w代表[a-zA-Z0-9],算是一种简化。所以[a-zA-Z0-9]+等价于(\w+),但是百度并未在最新的文档中提到\w+,大约是因为这个正则表达式粒度太大,适配效果没那么好。

    百度绝口不提\w+,但却提供:((?:[a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)[a-zA-Z0-9]+),当你的URL中数字与字母交替至少过一次,则可以使用这种。

    (?:正则)这种格式表示匹配正则,但不捕获匹配的文本,也不给此分组分配组号。

    字母与数字混合移动适配示例:

    http://www.baidu.com/abcd1234.html -> http://m.baidu.com/abcd1234.html

    适配规则:

    http://www.baidu.com/([a-zA-Z0-9]+).html -> http://m.baidu.com/${1}.html

    再如:字母与数字至少交替一次

    http://www.baidu.com/ab12cd34.html -> http://m.baidu.com/ab12cd34.html

    适配规则:

    http://www.baidu.com/((?:[a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)[a-zA-Z0-9]+).html -> http://m.baidu.com/${1}.html

    4、确定有中文字符的适配规则:((?:%[a-zA-Z0-9]{2,})+)

    解释:区间{min,max}:规定重复次数的范围。{2,}表示至少重复2次,没有上限。

    当URL中含有中文,百度会用gb2312去编码。如“潇”这个中文会被编码成:%E4%EC

    那么%[a-zA-Z0-9]{2,}就可以匹配%XX这样的规则了。%[a-zA-Z0-9]{2,})+也就是匹配中文的规则。

    中文URL适配规则示例:

    http://www.baidu.com/博客之家/ -> http://m.baidu.com/博客之家/

    适配规则:

    http://www.baidu.com/((?:%[a-zA-Z0-9]{2,})+)/ -> http://m.baidu.com/${1}/

    5、确定有参数的适配规则:([^&]+)

    解释:脱字符^:出现的位置不同,表达的意思有别。

    1、当^出现在字符组[]中的第一位时[^…],表示只匹配未列出的字符。如:[^&]表示匹配除了&之外的任意字符。

    2、当^不在[]中,则表示行的起始位置。如:^a表示匹配所有以a开头的行。

    参数URL适配规则示例:

    http://www.baidu.com/s?wd=爱裙海 ->http://m.baidu.com/s?wd=爱裙海

    适配规则:

    http://www.baidu.com/s?wd=([^&]+) -> http://m.baidu.com/s?wd=${1}

    6、URL中含有-和_的适配规则:

    解释:这个只要为-和_连接的各个部分分别做规则适配即可,不再赘述。

    -和_URL适配规则示例:

    https://www.blogs.hk/fushi-index.html -> http://m.www.blogs.hk/fushi-index.html

    适配规则:

    https://www.blogs.hk/([a-zA-Z]+)-([a-zA-Z]+).html -> http://m.www.blogs.hk/${1}-${2}.html
    打赏
    X
    打赏方式:
    • 支付宝
    • 微信
    • QQ红包

    打开支付宝扫一扫
    日期:2018年01月31日 09:09:22 星期三   分类:好文分享   浏览(34015)
    本文地址:https://www.blogs.hk/post-3428.html   [百度已收录]
    声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
    版权所有:《博客之家
    文章标题:《分析百度移动适配正则表达式代码详解
    除非注明,文章均为 《博客之家》 原创
    转载请注明本文短网址:https://www.blogs.hk/post-3428.html  [生成短网址]

    留言咨询

    自动获取QQ

    昵称

    邮箱

    网址

        站点统计

        • 收录网址:3370 个
        • 发布文章:3008 条
        • 在线人数:1人
        • 总访问量:270547063次
        • 本站运行:12年5月3天
        Copyright © 2025 博客之家 版权所有  
        關於本站免責聲明sitemap新站登錄