为了账号安全,请及时绑定邮箱和手机立即绑定

求正则表达式,地址校验?

求正则表达式,地址校验?

Smart猫小萌 2018-08-13 14:10:38
求正则表达式,地址校验
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

123456789101112131415161718192021222324252627282930313233343536/** * 校验地址  * @param string $str_addr utf-8编码的地址字符串 * * @return string 校验通过返回格式化后的字符串, 失败返回空字符串 */function checkAddr($str_addr) {    //把全角特殊字符替换为半角    $str_addr str_replace(['('')''-''#'], ['('')''-''#'], $str_addr);         //长度判断(不使用正则效率更高,也可以降低正则的复杂度)    if (!isset($str_addr{16})) {        return '';    }     /**     * 简单说明     * 首尾的'/'是php里的正则定界符, 把正则表达式包含起来,其它语言可能没有     * 末尾 'u', 是模式修饰符, 表示模式和目标字符串都被认为是 utf-8, 其它语言可能不同     * \x{4e00}-\x{9fa5} 是utf-8字符集中汉字的范围, 有些正则引擎中写法是 \u4e00-\u9fa5      * a-zA-Z  分别是从a到z的所有大小写字母     * (?2)   是引用第2个括号的匹配模式, 也就是等价于 ([\x{4e00}-\x{9fa5}a-zA-Z()\-#]*)     */    $reg '/^(([\x{4e00}-\x{9fa5}a-zA-Z()\-#]*)\d+(?2))+$/u';         //若要使用正则来判断字符串的长度, 正则前面可增加一个零宽断言 (?=.{17,})    $reg1 '/^(?=.{17,})(([\x{4e00}-\x{9fa5}a-zA-Z()\-#]*)\d+(?2))+$/u';         //检查    if (preg_match($reg$str_addr)) {        return $str_addr;    else {        return '';    }}

不知道你使用的是什么语言, 以上代码是PHP, 不同语言可能有些差异


查看完整回答
反对 回复 2018-08-20
  • 1 回答
  • 0 关注
  • 1278 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信