我要求一次允许任何只包含一个字符(W或D)的数字,并且不带序列。
例如: 2w 或 222W 或 2d 或 222D 或 2w5d
(不,例如 2wd , 55dw )
我尝试了类似的方法,但是它不起作用
[^\\d][w]$.
答案 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”更优雅的方法,但是现在还没有出现,所以我还是给你这个,因为它很好用。