Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个正则表达式是什么意思。检查http或https超链接是否足够?_Javascript_Regex - Fatal编程技术网

Javascript 这个正则表达式是什么意思。检查http或https超链接是否足够?

Javascript 这个正则表达式是什么意思。检查http或https超链接是否足够?,javascript,regex,Javascript,Regex,有人能提供建议吗?“全部替换”方法是如何工作的 message = message.replaceAll("(?:https?|http?)://[\\w/%.\\-?&=!#]+", "<a href='$0' target='_blank'>$0</a>"); message=message.replaceAll(“(?:https?| http?)://[\\w/%.\\-?&=!\\]+”, ""); 您可以在这里测试regexp:它还有几个用户贡献的r

有人能提供建议吗?“全部替换”方法是如何工作的

message = message.replaceAll("(?:https?|http?)://[\\w/%.\\-?&=!#]+",
"<a href='$0' target='_blank'>$0</a>");
message=message.replaceAll(“(?:https?| http?)://[\\w/%.\\-?&=!\\]+”,
"");

您可以在这里测试regexp:它还有几个用户贡献的regexp,您可以尝试。我尝试了你的regexp,但没有得到任何匹配项。但是我玩了一会儿,我想你的意思是:
(?:https?)://[\w/%.\-?&=!\\]+
,而且,我建议你使用

message = message.replaceAll(/(?:https?):\/\/[\w\/%.\-?&=!#]+/g,
"<a href='$0' target='_blank'>$0</a>");

请注意,我将整个regexp设置为一个捕获组,并将$0替换为$1。您还可以有多个捕获组,例如
(https?):\/\/([\w\/%.\-?&=!\35;]+)
,这里$1将是您的协议(http或https),$2将是链接的其余部分,例如
something.com?i=1

您可以在这里测试regexp:它还有几个用户贡献的regexp,您可以尝试。我尝试了你的regexp,但没有得到任何匹配项。但是我玩了一会儿,我想你的意思是:
(?:https?)://[\w/%.\-?&=!\\]+
,而且,我建议你使用

message = message.replaceAll(/(?:https?):\/\/[\w\/%.\-?&=!#]+/g,
"<a href='$0' target='_blank'>$0</a>");

请注意,我将整个regexp设置为一个捕获组,并将$0替换为$1。您还可以有多个捕获组,例如
(https?):\/\/([\w\/%.\-?&=!\]+)
,这里$1将是您的协议(http或https),$2将是链接的其余部分,例如
something.com?i=1
我不知道java正则表达式。 但我试图解释基于javascript的正则表达式

(?:https?| http?
:http或https,如果不存在则可以。(?:…)表示没有内存分配。只要过去

://
:这是与“://”相同的字符

[\\w/%.\\-?&=!\\]+
:这是正则表达式类,
\\w
:所有字符,(javascript应为'\w'
/,%,\,-,?,&,=,!,#
允许使用字符。
+
表示一个[]或多个[]。


$0
:仅返回完整匹配的地址部分,不包括“http”或“https”(javascript以索引1开头)。

我不知道java正则表达式。 但我试图解释基于javascript的正则表达式

(?:https?| http?
:http或https,如果不存在,可以。(?:…)表示没有内存分配。只需传递即可

://
:这是与“://”相同的字符

[\\w/%.\\-?&=!\\]+
:这是正则表达式类,
\\w
:所有字符,(javascript应为'\w'
/,%,\,-,?,&,=,!,#
允许使用字符。
+
表示一个[]或多个[]。


$0
:仅返回完整匹配的地址部分,不包括“http”或“https”(javascript以索引1开头)。

它说,与

  • 拥有
    http
    ,或
    https
  • 后跟
    ://
  • 后跟一个或多个单词字符
    [a-zA-Z0-9]
    /
    %
    -
    &
    =
  • 将其替换为

    现在,它会匹配所有的URL吗?不会。大部分,但不是全部。它会匹配
    我的名字boxiehttp://random
    ,理想情况下,您应该在liek
    \\b


    [删除误导性评论]

    它说,匹配一个字符串或字符串的一部分

  • 拥有
    http
    ,或
    https
  • 后跟
    ://
  • 后跟一个或多个单词字符
    [a-zA-Z0-9]
    /
    %
    -
    &
    =
  • 将其替换为

    现在,它会匹配所有的URL吗?不会。大部分,但不是全部。它会匹配
    我的名字boxiehttp://random
    ,理想情况下,您应该在liek
    \\b

    [删除误导性评论]

    是一个
    字符串
    类方法,匹配
    正则表达式
    ,并将其替换为参数化字符串。参数(如
    $0
    )是匹配索引

    您的
    regex
    应该匹配所有URL并将其转换为锚定标记,但我建议进行一些改进:

    • 在正则表达式中,您正在使用
      (?:https?| http?
      (?:SOMETHING)匹配非捕获组,并且
      使前面的字符可选(因此它匹配
      http
      htt

      您将使用
      https?

    • 在正则表达式类中通常不需要转义字符(如
      -
      &


    因此,问题是:

    .replaceAll("https?://[\\w/%.-?&=!#]+", "<a href='$0' target='_blank'>$0</a>");
    
    .replaceAll(“https?:/[\\w/%.-?&=!#]+”,“”);
    
    是一个
    String
    类方法,与
    Regex
    匹配,并用参数化字符串替换。参数(如
    $0
    )是匹配索引

    您的
    regex
    应该匹配所有URL并将其转换为锚定标记,但我建议进行一些改进:

    • 在正则表达式中,您正在使用
      (?:https?| http?
      (?:SOMETHING)匹配非捕获组,并且
      使前面的字符可选(因此它匹配
      http
      htt

      您将使用
      https?

    • 在正则表达式类中通常不需要转义字符(如
      -
      &


    因此,问题是:

    .replaceAll("https?://[\\w/%.-?&=!#]+", "<a href='$0' target='_blank'>$0</a>");
    
    .replaceAll(“https?:/[\\w/%.-?&=!#]+”,“”);
    
    您应该一步一步地了解以下内容:

    (?:https?|http?)
    
    |
    ->表示匹配https或http

    ->(仅在此处)表示可选元素,https中的“s”是可选的,http中的“p”也是可选的。您可能想做的是:“
    (https)?(http)?(?:https?|http?)://[\\w/%.\\-?&=!#]+
    
    "<a href='$0' target='_blank'>$0</a>"
    
    // I've simplified: \\w+ any number of characters
    String regex = "https?://\\w+";
    String input = "http://value1 ; https://value2";
    input = input.replaceAll(regex, "<a href='$0' target='_blank'>$0</a> ");
    
    // this will output : 
    // <a href='http://value1' target='_blank'>http://value1</a>  ; <a href='https://value2' target='_blank'>https://value2</a>
    System.out.println(input);