正则表达式一次允许一个特定字符

时间:2019-11-21 02:41:47

标签: javascript java regex

我要求一次允许任何只包含一个字符(W或D)的数字,并且不带序列。

例如: 2w 222W 2d 222D 2w5d

,例如 2wd 55dw

我尝试了类似的方法,但是它不起作用

[^\\d][w]$.

2 个答案:

答案 0 :(得分:1)

这是您要寻找的吗?

/\b(\d+[dw](?![dw]))+\b/ig

编辑:查看上面评论中@bobblebubble的答案以获得更好的选择。

请参见下面或此处的摘录:https://regex101.com

const regex = /\b(\d+[dw](?![dw]))+\b/ig;
const str = `2w 55dw 222W 2d 2wd 222D 2w5d`;
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.
  document.write(`Found match: ${m[0]}<br>`);
}

答案 1 :(得分:0)

\b(\d*w(\dd)*|\d*d(\dw)*)\b

在此处进行实时测试:https://regex101.com/r/2q9ZDM/1

也许有比“ w然后d”或“ d然后w”更优雅的方法,但是现在还没有出现,所以我还是给你这个,因为它很好用。