【问题标题】:How to check input string must follow below sequence?如何检查输入字符串必须遵循以下顺序?
【发布时间】:2017-06-16 15:37:52
【问题描述】:

我有一个字符串,我只想验证以下字符串

one=1&two=2 - 此字符串将被视为有效

23=2&sa=32fd- 这个字符串也被认为是有效的

12one=&13&=3 - 此字符串将被视为无效

验证此类字符串的最佳方法是什么?

【问题讨论】:

  • 您必须能够(通过模式)解释什么是有效的和无效的,而不是显示有效和无效字符串的示例。目前还不清楚你的逻辑是什么。
  • JavaScript 还是 Java?
  • javascript和java是不同的语言,你用的是哪一种?
  • 两者都可以,但是 java 对我来说很舒服
  • 看起来你想解析Query string参数。如果是这样的话,我会使用数十种现有解决方案中的一种。

标签: javascript java regex string validation


【解决方案1】:

如果你坚持使用正则表达式,你可以使用这个:

^(?:\w*?=\w*?&?)+$

Live Demo

const regex = /^(?:\w*?=\w*?&?)+$/gm;
const str = `
one=1&two=2
23=2&sa=32fd
12one=&13&=3`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

但是我建议查看一些 Query string 解析库。

【讨论】:

    【解决方案2】:

    以下将验证完整的字符串并捕获单个匹配项

    ^([\w|\d]+\=[\w|\d]+\&?)+$
    

    如果您只想验证字符串,那么 Olian04 的答案有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2023-04-05
      • 2022-01-17
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      相关资源
      最近更新 更多