Javascript 正则表达式提取从第二个符号开始的数字

Javascript 正则表达式提取从第二个符号开始的数字,javascript,regex,Javascript,Regex,很抱歉,还有一个关于regexp的问题,但是我找不到任何与我的需求类似的问题。我想输出字符串,它可以包含数字或字母“A”作为第一个符号,并且只能在其他位置上输出数字。输入是任何字符串,例如: ---INPUT--- -OUTPUT- A123asdf456 -> A123456 0qw#$56-398 -> 056398 B12376B6f90 -> 12376690 12A12345BCt -> 1212345 我尝试的是替换(/[a\d/g,'')(我使用JS

很抱歉,还有一个关于regexp的问题,但是我找不到任何与我的需求类似的问题。我想输出字符串,它可以包含数字或字母“A”作为第一个符号,并且只能在其他位置上输出数字。输入是任何字符串,例如:

---INPUT---    -OUTPUT-
A123asdf456 -> A123456
0qw#$56-398 -> 056398
B12376B6f90 -> 12376690
12A12345BCt -> 1212345

我尝试的是<代码>替换(/[a\d/g,'')(我使用JS),它几乎不做工作,除非在字符串中间有“代码> < <代码> >。我尝试使用

^
锚定,但是模式与字符串中的其他数字不匹配。不确定什么更容易-提取匹配的字符或删除不匹配的字符。

我认为您可以这样做,使用负前瞻,然后替换为空字符串

在非捕获组
(?:
)中,使用否定的lookahad
(?!
)来声明后面的不是字符串的开头,后面紧跟着
^a
或数字
\d
。如果是这种情况,请匹配任何字符

var模式=/(?:(?!^A |\d)。+/g;
变量字符串=[
“A123asdf456”,
“0qw#56-398美元”,
“B12376B6f90”,
“12A12345CT”
];
for(var i=0;i”+strings[i].replace(pattern)”);

}
您可以使用以下正则表达式:

var arr=['A123asdf456'、'0qw#$56-398'、'B12376B6f90'、'12A12345BCt'、'A-123asdf456'],
结果=arr.map(s=>s.match(/(^A |\d)/g).join(“”);

console.log(result);
您可以在替换的两个不同侧面中匹配并捕获所需和不需要的字符,然后将不需要的字符替换为零:

^(A)|\D
JS代码:

var inputStrings=[
“A-123asdf456”,
“A123asdf456”,
“0qw#56-398美元”,
“B12376B6f90”,
“12A12345CT”
];
console.log(
inputStrings.map(v=>v.replace(/^(A)|\D/g,“$1”))

)
您是否考虑过分两步执行此操作?检查是否输入[0]=='A'并保留数字,如果检查发现一个,则在前面粘贴一个
'A'
。@NiettheDarkAbsol是的,我确实考虑过(也考虑过不带正则表达式的循环)但我真的很感兴趣如何在一步中使用正则表达式。@DonwVorters-为什么?:)注意,这使用的是
匹配
,而不是
替换
-重要的区别是:DIt非常接近,但断开了
A-123asdf456
字符串(缺少首字母“A”)请检查更新。这比您正在使用的更干净、更短。@skwisgaarGood,但我认为0是不必要的,因为它包含在
\d
(?:(?!^[A]|\d)。+
应该做这项工作。@LuisGuzman很好!我已经更新了
(?:(?!^A|\d)的答案+