Javascript 我需要帮助获得正确的正则表达式2
需要快速的专家帮助:)获取url 我需要应用正则表达式从url中删除?ssct=654654654654654。Javascript 我需要帮助获得正确的正则表达式2,javascript,regex,Javascript,Regex,需要快速的专家帮助:)获取url 我需要应用正则表达式从url中删除?ssct=654654654654654。 我已经替换了(/\?*\/,'')这个,但它去掉了我需要的符号。谢谢你的帮助。你能用“#”代替空字符串吗? replace(/\?..\#/,“#”)你能用“#”代替空字符串吗? 替换(/\?*\/,“\”)使用: 使用: 最简单的变化是 /\?[^#]*/ 它匹配一个文本“?”字符,后跟除“#”以外的任意数量的字符 它正确地处理了URI引用始终是分层的(httpvsmailto是
我已经替换了(/\?*\/,'')这个,但它去掉了我需要的符号。谢谢你的帮助。你能用“#”代替空字符串吗?
replace(/\?..\#/,“#”)
你能用“#”代替空字符串吗?
替换(/\?*\/,“\”)
使用:
使用:
最简单的变化是
/\?[^#]*/
它匹配一个文本“?”
字符,后跟除“#”以外的任意数量的字符
它正确地处理了URI引用始终是分层的(http
vsmailto
是“不透明的”)并且具有查询组件的情况
警告
不过,使用简单的正则表达式也有可能出错。例如,这种方法存在以下问题:
"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
vsmailto
是“不透明的”)并且具有查询组件的情况
警告
不过,使用简单的正则表达式也有可能出错。例如,这种方法存在以下问题:
"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。