我正在尝试使用match()
函数在javascript中匹配url,它将正则表达式作为模式。我需要匹配url(://..:/.?=&
)
var url = 'http://www.sun.com:80/index.html?q=1&q2=2#fragment';
我检查了其他页面但无法找到特定的正则表达式。 并且还请建议学习写正则表达式的好资料。
[更新]
我试图打破字符串中的url保存到像(string= ['http', '', '', 'www', 'sun', 'com', '80', 'index', 'html', 'q', '1', 'q2', '2']
)这样的数组中。例如 - 如果模式匹配变量保存url的索引位置然后我使用slice()
函数来提取值,我的工作URL也可能在不同的语言(urdu等),我需要为特定的写正则表达式网址符号(:/。?=&#)
答案 0 :(得分:2)
这是最简单的一种(适用于任何语言),因为我们在这里只添加了特殊字符。
decodeURI(window.location.href).split(/[\/.?=&:#]+/g);
以下是英文: -
var res = window.location.href.split(/[^A-Za-z0-9]+/g);
res将是包含除特殊字符之外的所有文本(参数和值)的结果数组。有更好的方法来解析URL,但这取决于所需的内容。此解决方案适用于您的确切要求。 如果网址包含乌尔都语字符: -
decodeURI(window.location.href).split(/[^A-Za-z0-9\u0600-\u06ff]+/g);
\ u0600- \ u6ff - >这是URDU字符的unicode范围。现在也补充说。注意,我们添加了" decodeURI",这样首先非英语字符将被解码,然后我们使用正则表达式进行搜索。