gpt4 book ai didi

javascript - jQuery 子字符串或正则表达式从序列化字符串中删除多余的字符

转载 作者:行者123 更新时间:2023-11-30 18:10:17 25 4
gpt4 key购买 nike

我正在从 grails select 标记中获取值,并且需要去除 jQuery 获取的额外字符并在将字符串传递给我们的 BIRT 报告服务器之前对其进行格式化。

grails 中的列表类似于:

Term:
[201360, Continuing Ed Automn 2013]
[201350, Summer Session 2013]
...
College
[AS, College of Arts and Sciences]
[BA, College of Business Administration]
...

这是在两个选择列表上都进行选择时由 jQuery 序列化的示例:

Term=%5B201360%2C+Continuing+Ed+Autumn+2013%5D&College=%5BBA%2C+School+of+Business+Admin%5D 

我希望最终值是这样的

Term=201360&College=BA

做直子串的问题是变量的数量可以改变,而且都是可选的。可能有 1 个,也可能有 20 个。

我将如何只提取需要的部分?

最佳答案

我不确定您为什么会得到那种数据。无论如何:

// I guess + mean space here, so I convert it back to space before
// doing percentage unescape
var convertedInput = unescape(inputString.replace(/\+/g, ' '));
var output = convertedInput.replace(/\[ *([^,]+?) *,[^\]]+\]/g, '$1')

正则表达式可能看起来比必要的稍微复杂一些,但我在 [] 的第一项中删除了额外的前导和尾随空格(如果有的话)。

解释:

\[ *([^,]+?) *,[^\]]+\]
  • 整个正则表达式尝试匹配 key=[item1, item2, ...] 形式的键值对中的值部分。它会捕获第一个项目并丢弃其余的。
  • \[\] 是文字 [] 字符。
  • *([^,]+?) *,:吃掉前导空格 *。然后使用并捕获 token ([^,]+?),假设没有逗号 [^,],并且由于惰性量词 +? 将在遇到序列之前尽可能少地消耗:可选空格后跟(第一个)逗号 *,
  • [^\]]+:消耗(然后丢弃)所有不是]的东西。它将停止在 ](或字符串结尾,但这里不是这种情况)。

假设:

  • [] 是平衡的,没有嵌套。
  • 要提取的项目中没有逗号,
  • 要修改的键值对的形式为key=[item1, item2, ...]

关于javascript - jQuery 子字符串或正则表达式从序列化字符串中删除多余的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com