查找 10 或 100,1000 的正则表达式...不起作用

问题描述 投票:0回答:1

我创建正则表达式 /(10?|10{2,})/g 来查找 1,10 或 100,1000...但下面的代码不会返回预期结果。我不知道我哪里错了,请帮助我!

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for a "1", followed by zero or one "0" characters:</p>

<p id="demo"></p>

<script>
let text = "1, 10, 100 or 1000?";
let result = text.match(/(10?|10{2,})/g);
//should return 1,10,100,1000 but instead return 1,10,10,10
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

javascript html regex numbers match
1个回答
0
投票

您的问题是

10?
将匹配字符串中的所有
1...
,并且由于这是交替中的第一个元素,因此正则表达式引擎在匹配时停止。您可以通过交换交替来解决这个问题,以便最长的匹配位于第一个:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for a "1", followed by zero or one "0" characters:</p>

<p id="demo"></p>

<script>
let text = "1, 10, 100 or 1000?";
let result = text.match(/(10{2,}|10?)/g);
//should return 1,10,100,1000 but instead return 1,10,10,10
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

或者更好的是,只需将正则表达式简化为

10*
:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for a "1", followed by zero or one "0" characters:</p>

<p id="demo"></p>

<script>
let text = "1, 10, 100 or 1000?";
let result = text.match(/(10*)/g);
//should return 1,10,100,1000 but instead return 1,10,10,10
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.