【问题标题】:Regular expression for url matchingurl匹配的正则表达式
【发布时间】:2010-10-07 09:17:49
【问题描述】:

我有一个文本字段,其值为 http://localhost/Send/test.php?s/?a=1&o=2。另外三个文本框。如果我们输入三个值,上面的 url 会像 http://localhost/Send/test.php?s/?a=1&o=2&s1=a&s2=b&s3=c 一样改变。 s1,s2s3 的值不会保存在任何地方。我的问题是我们如何检查 s1 的值是否已经设置?如果我更改 s1 的文本框值,我该如何更新 s1 的值

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    您可以使用此正则表达式替换

    url.replace(/&s1=([^$]+|[^&]+)/i, "&s1=newvalue");
    

    【讨论】:

      【解决方案2】:

      我请你在 PHP 中使用 PCRE:

      (?=(?P<ES1>.*&s1=)?)(?(ES1)RegexToMatchIfS1AlreadyExist|RegexToMatchIfS1NotExist)
      

      所以

      $result = preg_replace('/^(?=(?P<ES1>.*&s1=)?)(?(ES1)(?P<Left>.*&s1=)(?P<Right>.*+)$|RegexToMatchIfS1NotExist)/', '${1}newvalue${2}', ...);
      

      【讨论】:

      • 如果您不需要对存在与否的 &s1= 采取不同的操作,我认为@BrunoLM 的答案是首选。
      • 我需要检查s1是否存在
      【解决方案3】:

      对每种语言都使用这个安全的正则表达式...

      ^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 2015-09-14
        • 2021-12-31
        相关资源
        最近更新 更多