Javascript 我想要一个正则表达式,它将选择所有字符,包括特殊字符,最后4个字符除外。香草JS
//这不起作用,输出如下: 输出: 0,0,0,0,0,2 //它只选择这些以粗体AAAAA突出显示的字符-0000021111-1111 这就是我所期待的: A、 A,A,A,A,-,0,0,0,0,2,1,1,1,1- 基本上,我希望选择所有字符,包括-或除最后4个字符以外的任何其他特殊字符。 为了更好地理解,我列出了一些额外的示例 样本1:ABC-101010-1111 预计产量为:A,B,C,-,1,0,1,0,1,0- 样本2:ABCD101010-11111 预期产量为:A、B、C、D、1、0、1、0、-1 我用的是香草JS 非常感谢你的参与 提前谢谢,先生/女士 您可以使用Javascript 我想要一个正则表达式,它将选择所有字符,包括特殊字符,最后4个字符除外。香草JS,javascript,regex,Javascript,Regex,//这不起作用,输出如下: 输出: 0,0,0,0,0,2 //它只选择这些以粗体AAAAA突出显示的字符-0000021111-1111 这就是我所期待的: A、 A,A,A,A,-,0,0,0,0,2,1,1,1,1- 基本上,我希望选择所有字符,包括-或除最后4个字符以外的任何其他特殊字符。 为了更好地理解,我列出了一些额外的示例 样本1:ABC-101010-1111 预计产量为:A,B,C,-,1,0,1,0,1,0- 样本2:ABCD101010-11111 预期产量为:A、B、C、
/(?!\d{1,4}$)/g
看
注意:如果需要匹配除最后四个字符以外的所有字符,则需要在“前瞻”中用
替换\d
,甚至可以用更简洁的方式编写:
/(?!.{0,3}$)/g
看
详情:
-除换行符以外的任何单个字符
-与位置匹配的负前视,该位置后面不紧跟零到三个字符(换行字符除外),直到字符串结束(?!.{0,3}$)
,要匹配换行符,请使用[^]
,[\s\s]
/[\d\d]
/[\w\w]
或添加s
标志),该标志不会在字符串末尾开始一、二、三或四位数的序列((?!\d{1,4}$)
)
请参阅JavaScript演示:
console.log(“AAAAA-0000021111-1111.match(/(?!\d{1,4}$)/g))
console.log(“AAAAA-0000021111-1111.match(/。(?!。{0,3}$))/g))
您告诉它匹配一个紧接着4位数字的数字。为什么要和字母匹配?你想要的很清楚。为什么您认为只有与\d
匹配的regexp才能实现此目标?您应该真诚地尝试解决此问题,并在此处发布此尝试。您的尝试甚至与您想要的内容不匹配。不,\d
与字母不匹配。这就是为什么你的结果中只有数字。我什么都不想讨论。我只是在指出为什么你的基本方法是错误的。非常感谢Wiktor!!我还没有测试过这个,但是我对你的正则表达式很有信心,我会尝试并让你知道,再次感谢
let str = "AAAAA-0000021111-1111";
let res = str.match(/\d(?=\d{4})/g);
document.write(res);