一道正则表达式题目

有这样一首诗

感师恩
纷飞三十载,甘当摆渡人。
百年兴国梦,一片育才心。
术业专攻久,识见万丈深。
谆谆长者诲,爱生甚己身。

陶醉算法趣,数理有乾坤。
长困符号阵,推敲为求真。
沉思前人意,莫知晨与昏。
束身阁楼中,掩耳弃红尘。

明辨后生意,指点如有神。
劳形案牍上,昼夜批论文。
不图名与利,只愿木成林。
桃李芬芳日,师心便是春。

在手机端最好显示成一句一行。

    //判断是否为手机访问
    const isMobile = (function () {
        var ua = navigator.userAgent;
        var ipad = ua.match(/(iPad).*OSs([d_]+)/),

            isIphone = !ipad && ua.match(/(iPhonesOS)s([d_]+)/),

            isAndroid = ua.match(/(Android)s+([d.]+)/)
        return isIphone || isAndroid
    })()

    function split(s) {
        if (!isMobile) return s
        return s.replace(/([^u4e00-u9fa5
](?=[u4e00-u9fa5]))/g, "$1
")
    }
  • u4e00-u9fa5表示全部汉字
  • (?=xxx)表示零宽断言
  • $1表示反向引用

这个问题用到了很多正则表达式知识,是一个很好的面试题。

参考资料

正则表达式进阶

原文地址:https://www.cnblogs.com/weiyinfu/p/10946633.html