Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要帮助获得正确的正则表达式2_Javascript_Regex - Fatal编程技术网

Javascript 我需要帮助获得正确的正则表达式2

Javascript 我需要帮助获得正确的正则表达式2,javascript,regex,Javascript,Regex,需要快速的专家帮助:)获取url 我需要应用正则表达式从url中删除?ssct=654654654654654。 我已经替换了(/\?*\/,'')这个,但它去掉了我需要的符号。谢谢你的帮助。你能用“#”代替空字符串吗? replace(/\?..\#/,“#”)你能用“#”代替空字符串吗? 替换(/\?*\/,“\”)使用: 使用: 最简单的变化是 /\?[^#]*/ 它匹配一个文本“?”字符,后跟除“#”以外的任意数量的字符 它正确地处理了URI引用始终是分层的(httpvsmailto是

需要快速的专家帮助:)获取url 我需要应用正则表达式从url中删除?ssct=654654654654654。
我已经替换了(/\?*\/,'')这个,但它去掉了我需要的符号。谢谢你的帮助。

你能用“#”代替空字符串吗?
replace(/\?..\#/,“#”)

你能用“#”代替空字符串吗?
替换(/\?*\/,“\”)
使用:

使用:


最简单的变化是

/\?[^#]*/
它匹配一个文本
“?”
字符,后跟除
“#”以外的任意数量的字符

它正确地处理了URI引用始终是分层的(
http
vs
mailto
是“不透明的”)并且具有查询组件的情况


警告 不过,使用简单的正则表达式也有可能出错。例如,这种方法存在以下问题:

"http://www.blahblah.com/#games/park?duck"
其中第一个
出现在片段内部而不是查询中

为了防弹,您确实需要正确解析URI。包含:

下面一行是将格式良好的URI引用分解为其组件的正则表达式

因此,要正确处理所有层次URI,您需要执行以下操作

var myUrl = "http://www.blahblah.com/?ssct=654654654654654#games/park";
myUrl.replace(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/, "$1$3$5$8")
这可能是一次性的,但另一种选择是使用JS库,它提供适当的URI处理原语,如


最简单的变化是

/\?[^#]*/
它匹配一个文本
“?”
字符,后跟除
“#”以外的任意数量的字符

它正确地处理了URI引用始终是分层的(
http
vs
mailto
是“不透明的”)并且具有查询组件的情况


警告 不过,使用简单的正则表达式也有可能出错。例如,这种方法存在以下问题:

"http://www.blahblah.com/#games/park?duck"
其中第一个
出现在片段内部而不是查询中

为了防弹,您确实需要正确解析URI。包含:

下面一行是将格式良好的URI引用分解为其组件的正则表达式

因此,要正确处理所有层次URI,您需要执行以下操作

var myUrl = "http://www.blahblah.com/?ssct=654654654654654#games/park";
myUrl.replace(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/, "$1$3$5$8")
这可能是一次性的,但另一种选择是使用JS库,它提供适当的URI处理原语,如


正则表达式不是最理想的解决方案。在有效的URI格式中,只有一个“?”字符。因此,最好的解决方案是:

var a = location.href;
a = a.substring(0, a.indexOf("?"));

正则表达式不是最理想的解决方案。在有效的URI格式中,只有一个“?”字符。因此,最好的解决方案是:

var a = location.href;
a = a.substring(0, a.indexOf("?"));

做完后把丢失的放回原处。做完后把丢失的放回原处。注意+1。否则,这个答案和其他答案一样一般。@nhahdh,你在高于平均水平的答案中寻找什么?电子邮件、URI、HTML。。。如果我们看一下规格,这些是非常复杂的。假设是可以的——因为人们通常不会在边界上行走,所以也有必要明确提到我们正在做的假设。@nhahtdh,如果我在前面加上“假设您的URI引用总是分层的,并且总是有一个查询组件,…”的话,它会通过吗?警告已经起到了很好的警告作用,但补充一下也无妨。好吧,不管怎样,这是我自己的意见…+1作为警告。否则,这个答案和其他答案一样一般。@nhahdh,你在高于平均水平的答案中寻找什么?电子邮件、URI、HTML。。。如果我们看一下规格,这些是非常复杂的。假设是可以的——因为人们通常不会在边界上行走,所以也有必要明确提到我们正在做的假设。@nhahtdh,如果我在前面加上“假设您的URI引用总是分层的,并且总是有一个查询组件,…”的话,它会通过吗?警告已经起到了很好的警告作用,但补充一下也无妨。无论如何,这是我自己的观点……RFC3986的第3.5节说“
fragment=*(pchar/“/”/“?”
”,所以一个有效的URI引用可以包含任意数量的
?”
s。RFC3986的第3.5节说“
fragment=*(pchar/“/”/“?”
”,所以一个有效的URI引用可以包含任意数量的
“?”
s。