URL查询参数中的下划线是否有效?

3

我注意到,2014年由rackspace制作的URI utilities python库具有一个parse_query_string方法,它将剥离下划线:

>>> parse_query_string("_id=foo")
{"id":"foo"}

这是不良行为吗?以下是他们正在使用的正则表达式:

_QS_PATTERN = re.compile(r'(?<![0-9])([a-zA-Z][a-zA-Z_0-9\-.]*)=([^&]+)')

我注意到删除第一个a-zA-Z集合后,它可以按预期工作:

_QS_PATTERN = re.compile(r'(?<![0-9])([a-zA-Z_0-9\-.]*)=([^&]+)')

有什么想法为什么他们这样做了吗?

我不认为这是不良行为,有时候需要可能会证明它们是合理的。但总的来说,避免使用下划线将有助于创建更易读的URL。 - Anshul Goyal
1个回答

0

模式与_不匹配,因此您需要重新定义它以获得_。

(?<![0-9])([_a-zA-Z][a-zA-Z_0-9\-.]*)=([^&]+)

1
我认为这里不需要使用|符号。[_a-zA-Z]应该可以正常工作。 - DaSourcerer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接