我有来自Google圈子的网址,但未通过正常的正则表达式进行验证。例如,asp.net提供了一个标准的正则表达式来处理URLS,它是:
"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"
但是当你得到谷歌圈子网址时:
它无法应付。
我想到了以下表达式:(\?.+)?
这基本上意味着URL后面可以有一个问号,然后是任意类型的任意数量的字符,但这不起作用。
整个表达方式是:
"[Hh][Tt][Tt][Pp]([Ss])?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*(\?.+)?)?"
出于某种原因,这也不适用于复杂的URL。 感谢帮助。
答案 0 :(得分:0)
为了进行此测试,我添加了锚点^
和$
,转义了/
,因为以下是javascript正则表达式文字,更改了&
,没有业务,&;
,删除了空格并将#
添加到第三个字符集,它似乎工作正常:
/^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w.\/?%&;#=-]*)?$/.test(
'https://plus.google.com/photos/114197249914471021468/albums/5845982797151575009/5845982803176407170?authkey=CKfNzLrhmenraA#photos/114197249914471021468/albums/5845982797151575009/5845982803176407170?authkey=CKfNzLrhmenraA' )
// true
我还将-
移到了第三个字符集的末尾,因为如果不指定范围,它应该在集合的开头或结尾。
免责声明:我不建议将此作为验证网址的好方法,它只是原始正则表达式的编辑版本,现在适用于此特定情况。