【问题标题】:regex: max-age value正则表达式:最大年龄值
【发布时间】:2016-04-02 14:25:18
【问题描述】:

我正在尝试验证 HSTS 标头。

有两种情况需要测试:

  1. 多个 Max-age 值,例如 max-age=342343; max-age=234234

仅当两个最大年龄之间没有“;”值时,以下内容才有效。这是个问题....

  1. 第二个是 Max-age 包含数字和其他字符的地方,例如 max-age=324Amax-age=534A;

    var string = 'max-age=3423A42; preload';
    
    var multipleMaxAge = string.match(/max-age=([0-9]+)/gi).length;
    var invalidMaxAge = string.match(/max-age=(.*\D+.*$);?/gi);
    
    if (invalidMaxAge){
       alert("Max-age Can only be digits... error");
    }
    if (multipleMaxAge != 1){
       alert("Multiple Maximum Ages!");
    }
    

我如何让正则表达式在末尾有或没有; 进行模式匹配...

谢谢,

【问题讨论】:

  • 你想匹配整行max-age=342343; max-age=234234吗?或者只有这么多max-age=342343;
  • 我想同时匹配两个,但在两个不同的字符串中。
  • 不会max-age=(?:[0-9]+);? 工作?

标签: regex hsts


【解决方案1】:

试试max-age=([0-9]+)[\s;]

[\s;] 表示您的号码后面的下一个字符将是空格或;

它也应该可以解决随机字母的问题。

【讨论】:

  • @user3853149 我假设您的数据可能是空格分隔的,例如:max-age=342342 preload
  • 它是空格分隔的,但是“;”是可选的。它可以是 max-age=34234; preloadmax-age=3243242 preload
  • @user3853149 那么正则表达式应该可以工作(你试过了吗???)。 [] 表示 char 类,它本质上是单个字符的 OR\s 表示空格。
猜你喜欢
  • 2021-09-14
  • 2019-12-28
  • 2019-06-10
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
相关资源
最近更新 更多