网址后如何不包含标点符号

时间:2018-07-02 23:45:39

标签: javascript regex url punctuation

所以我有这段代码,

const urlPattern1 = new RegExp(
  "(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}[^.,!?:;\\s]+$/?|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}[^.,!?:;\\s]+$/?|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]\\.[^\\s]{2,}[^.,!?:;\\s]+$/?)"
)

我希望它在URL后不包含任何标点符号。因此,现在如果我输入“ www.google.com / ...”,它将仅正确注册“ www.google.com/”。但是,如果我输入“ www.google.com。!”那么我希望它仍然只注册“ www.google.com”,但是现在它什么也没有注册。看来这只是正确地处理了句点,而其他所有标点符号(如!)都没有得到正确处理。有帮助吗?

1 个答案:

答案 0 :(得分:0)

(?:http(?:s)?:\/\/)?(www\.[^\.]+\.\w+)

尝试一下。转到https://regexr.com并放入

www.google.com
www.google.com/...
www.google.com.!
http://www.google.co-!#{}

作为测试字符串,并将其作为正则表达式。应该可以。

www.google.com // Matches www.google.com
www.google.com/... // Matches www.google.com
www.google.com.!  // Matches www.google.com
http://www.google.co-!#{}  // Matches www.google.co