Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想要一个正则表达式,它将选择所有字符,包括特殊字符,最后4个字符除外。香草JS_Javascript_Regex - Fatal编程技术网

Javascript 我想要一个正则表达式,它将选择所有字符,包括特殊字符,最后4个字符除外。香草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、

//这不起作用,输出如下:

输出: 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

非常感谢你的参与

提前谢谢,先生/女士

您可以使用

/(?!\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);