我想http://example.com
在浏览器窗口中测试 URL中的空搜索字符串,即http://example.com/search/?s=
,但不匹配/search/?s=withsearchterms
, 之后有任何搜索词的任何内容/search/?s=
,然后使用if
语句并.addClass
显示警告未输入搜索词的 div。
我正在尝试使用 Javascript,g.test
如下所示;RegEx
根据几个 RegEx 测试人员的说法,该模式是有效的。但没有运气:
var href = window.location.href;
var contains = /[\/?s=]+/g.test(href);
if (contains) {
$("#no-search-terms").addClass("display-block");
}
Run Code Online (Sandbox Code Playgroud)
我的正则表达式错了吗?是我用test
错了吗?
编辑 11/29/2020
这项工作,感谢Heo:
var search = window.location.href;
var regex = /(?<=\/\?s=).*$/
var result=regex.exec( search )
if (result && result[0]=='') {
alert("The search terms are empty.");
} else {
alert("The search terms are not empty or no matched.");
}
Run Code Online (Sandbox Code Playgroud)
但是miknik 的答案要简单得多,不需要正则表达式。适用于 Chrome 87、Firefox 83 和 Safari 14:
const queries = new URLSearchParams(window.location.search)
if (queries.has("s") && queries.get("s").length == 0){
alert("The search terms are empty.");
}
Run Code Online (Sandbox Code Playgroud)
您可以测试字符串结尾是否包含/?s=
:
var url1 = 'https://example.com/?s=';
var url2 = 'https://example.com/?s=withsearchterms';
var regex = /\/\?s=$/;
console.log(url1 + ' ==> ' + regex.test(url1));
console.log(url2 + ' ==> ' + regex.test(url2));
Run Code Online (Sandbox Code Playgroud)
输出:
https://example.com/?s= ==> true
https://example.com/?s=withsearchterms ==> false
Run Code Online (Sandbox Code Playgroud)
解释:
\/\?s=
- 预计 /?s=
$
- 尾随$
锚定正则表达式的末尾,例如,前面的文本必须出现在末尾if
测试)