Nginx if语句加正则表达式实现字符串截断

在给大家讲述这个问题之前,先给大家看一段nginx配置. 我们用到了 set-misc-nginx-module

代码如下:

location /test/ {
    default_type text/html;
    set_md5 $hash "secret"$remote_addr;
    echo $hash;
}

这样输出来的内容,可能是下面这样的

代码如下:

202cb962ac59075b964b07152d234b70

但如果我们要截取某几位字符怎么办呢?
首先大家想到的肯定是使用模块来实现, 但只能这样吗? 有没有更方便的方式呢?

有的.
我们可以巧妙地使用if + 正则表达式来实现这个小需求:

代码如下:

location /test/ {
    default_type text/html;
    set_md5 $hash "secret"$remote_addr;
    if ( $hash ~ ^[\w][\w][\w][\w][\w][\w][\w][\w]([\w][\w][\w][\w][\w][\w][\w][\w]) ) {
        set $hash $1;
    }
    echo $hash;
}

访问/test/输出的就是:

代码如下:

ac59075b

(0)

相关推荐

  • Nginx中IF语句实现数学比较功能

    nginx的if支持=.!= 逻辑比较, 但不支持if中 <.<.>=.<= 比较. 本示例使用了set-misc-nginx-module 复制代码 代码如下: location = /test/ {     default_type html;     set_random $a 0 9;      #$a 随机 从0-9取     if ( $a <= 4 ){         #$a 如果 < 4 这是错误的写法         echo 'a: $a is l

  • nginx+rsync+inotify实现负载均衡配置方法

    实验环境 前端nginx:ip 192.168.6.242,对后端的wordpress网站做反向代理实现复杂均衡 后端nginx:ip 192.168.6.36,192.168.6.205都部署wordpress,并使用相同的数据库 1.在后端的两个wordpress上配置rsync+inotify,两服务器都开启rsync服务,并且通过inotify分别向对方同步数据 下面配置192.168.6.205这台服务器 vim /etc/rsyncd.conf uid = nginx gid = n

  • Nginx实现if多重判断配置方法示例

    nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现: 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解: 复制代码 代码如下: if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {     return 403; } 下面这是等效的,并真实可用的配置 复制代码 代码如下: set $flag

  • Nginx中if语句的判断条件与多条件判断详解

    一.if语句中的判断条件(nginx)介绍 1.正则表达式匹配: ==:等值比较; ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写: ~*:与指定正则表达式模式匹配时返回"真",判断匹配与否时不区分字符大小写: !~:与指定正则表达式模式不匹配时返回"真",判断匹配与否时区分字符大小写: !~*:与指定正则表达式模式不匹配时返回"真",判断匹配与否时不区分字符大小写: 2.文件及目录匹配判断: -f,

  • Nginx中IF、AND、OR语句用法实例

    在上一篇文章:<Nginx if语句加正则表达式实现字符串截断>中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法: 什么是逻辑用法呢, 就程序中的and.or关系, 就叫做逻辑了. NGINX支持if的 and 与 or 或者 && 与 || 吗? 答案是No. 当你尝试这样配置, 重载nginx时, nginx会报出错误 复制代码 代码如下: location = /test/ {         default_type text/html

  • PHP、Nginx、Apache中禁止网页被iframe引用的方法

    可以使用php或nginx等添加X-Frame-Options header来控制frame权限X-Frame-Options有三个可选的值: DENY:浏览器拒绝当前页面加载任何Frame页面SAMEORIGIN:frame页面的地址只能为同源域名下的页面ALLOW-FROM:允许frame加载的页面地址 PHP代码: 复制代码 代码如下: header('X-Frame-Options:Deny'); Nginx配置: 复制代码 代码如下: add_header X-Frame-Option

  • Nginx if语句加正则表达式实现字符串截断

    在给大家讲述这个问题之前,先给大家看一段nginx配置. 我们用到了 set-misc-nginx-module 复制代码 代码如下: location /test/ {     default_type text/html;     set_md5 $hash "secret"$remote_addr;     echo $hash; } 这样输出来的内容,可能是下面这样的 复制代码 代码如下: 202cb962ac59075b964b07152d234b70 但如果我们要截取某几位

  • PowerShell使用正则表达式查找字符串实例

    本文介绍在PowerShell中使用-match运算符加正则表达式,进行字符串的搜索. match运算符,后面加上正则表达式,可以对字符串进行正则匹配查找.正则表达式功能强大,用于查找字符串时方便快捷.所以match运算符是我们经常要用到的一个知识.match查找的结果也是布尔值类型,即True或False,表示匹配成功或匹配失败. 下面举例说明: "123"是以"1"开头 复制代码 代码如下: PS C:\Users\spaybow> "123&q

  • 正则表达式实现字符串每4位后自动加空格效果(两种方法)

    需求:输入框中输入银行卡号(或其他)时,每4位自动加空格(如下图) 分析 方法一:监控输入框的keyup事件,当value值的长度为4,8,12,16时,插入空格字符串" "(vue中代码片段如下) <input type="text" v-model="bankCard" @keyup="bankCardKeyup"> bankCardKeyup (e) { let self = this // 如果是删除键,则

  • PowerShell中使用正则表达式匹配字符串实例

    本文介绍PowerShell中使用match操作符,配合正则表达式从字符串提取指定的内容. 使用正则表达式,除了可以确定字符串是否匹配某一个正则表达式规则之外,另一个很重要的应用就是从字符串中提取出指定的内容.什么意思呢,举个例子,一个字符串中有出现连续的三个数字,我们想很方便的把这三个数字提取出来,那么就可以用正则表达式. 复制代码 代码如下: PS C:\Users\Hong> $str="abc123abc" PS C:\Users\Hong> $pattern=&q

  • JavaScript 正则表达式与字符串查找方法

    首先提出一个问题: 如何取得一个给定的字符串substr在另一个字符串str中出现的次数? 字符串匹配,第一想到的就是正则表达式,但我们最常使用的字面量来创建的正则表达式方式却无法传入变量, 这时应该使用另一种创建正则表达式的方式:构造函数,如下 var reg = new RegExp(substr, "g"); 其中第一个参数表示要匹配的字符串模式,因此可以传入变量,不需要加/ /,第二个参数是可选的标志字符串. 可以传入变量了,再介绍个字符串基本包装类型的方法:match() 语

  • python正则表达式从字符串中提取数字的思路详解

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## \D 匹配任意非数字字符. ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符). ## x* 匹配0次或者多次 x 字符. ## x+ 匹配1次或者多次 x 字符. ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次. ## (a|b|c) 要么匹配

  • Js利用正则表达式去除字符串的中括号

    let str = '这是一个字符串[html]语句;[html]字符串很常见'; alert(str.replace(/\[|]/g,''));//移除字符串中的所有[]括号(不包括其内容) //输出:这是一个字符串html语句;html字符串很常见 alert(str.replace(/\[.*?\]/g,''));//移除字符串中的所有[]括号(包括其内容) //输出:这是一个字符串语句;字符串很常见 移除所有中括号,不包括其内容 let str = "[1,2,3,4,5,6,7,8]&

  • 正则表达式之字符串模式匹配实例详解

    目录 前言 什么是正则表达式 字符范围匹配 元字符 多次重复匹配 定位匹配 贪婪模式与非贪婪模式 表达式分组 结语 前言 今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会用到的,学会正则表达式之后会让你除了提高效率外,会给你带来绝对的成就感. 接下来我们正式开始! 什么是正则表达式 正则表达式是检查.匹配字符串的表达式 正则表达式用来描述某种规则,同时它不是某种语言专有的技术,它对主流的语言都有良好的支持. 正则表达式的主要使用场景是:字符串检验,查找与替换. 示

  • JS使用正则表达式除去字符串中重复字符的方法

    本文实例讲述了JS使用正则表达式除去字符串中重复字符的方法.分享给大家供大家参考,具体如下: 这里演示一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果. 具体代码如下: <html> <head> <title>利用正则表达法除去字符串中的重复字符</title> </head> <body> <script language="javascript">

  • 正则表达式截取字符串的方法技巧

    有这么一段字符串: [数字]字符串 结果 取  a=数字 b=字符串 截取方法1: int a = Convert.ToInt32(txt1.Text.Trim().Replace('[', ']').Split(']')[1]); string b = txt1.Text.Trim().Replace('[', ']').Split(']')[2]; 截取方法2: string str = "[数字]字符串"; Regex reg = new Regex(@" ([^]+)

随机推荐