对于第一组,我得到域名。但是组2不会获得域的UK。
下面是regex:https://regex101.com/r/Svg7KY/1中的代码
First try: /^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^.]+)((?:[.,]\w+))/gm
Second try: /^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^.]+)([,.](?=[^.,]*$)\w+)/gmnu.co.uk www.nu.co.uk http://www.nu.co.uk https://www.nu.co.uk
发布于 2020-02-12 16:35:10
如果要在第二个捕获组中捕获uk,可以重复0次或多次,匹配一个点,后面跟着1+单词字符。
然后匹配一个点并捕获第1组中的最后一个单词字符。
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^.]+)(?:[.,]\w+)*\.(\w+)关于最后一部分(?:[.,]\w+)*\.(\w+)
(?:非捕获群[.,]\w+匹配点或逗号和1+单词字符
)*关闭组和重复0+时间\.匹配一个点(\w+)捕获组2,匹配1+单词字符发布于 2020-02-12 16:32:14
我看了你提供的链接中的正则表达式。它与"uk“不匹配的原因是,这些示例比其他示例出现的\.\w+事件更多。您只需在最后一个组中添加一个量词即可:
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^.]+)((?:[.,]\w+)){1,2}
另外,在最后一个组的字符类中是否需要逗号?如果没有,可以将正则表达式简化为:
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:\w+)(?:\.\w+)+
https://stackoverflow.com/questions/60192843
复制相似问题