gpt4 book ai didi

javascript - 输出导致与正则表达式不匹配的第一个字符

转载 作者:行者123 更新时间:2023-11-29 09:55:59 24 4
gpt4 key购买 nike

是否可以从导致与正则表达式不匹配的字符串(其索引)中输出第一个字符?是否可以仅使用正则表达式匹配操作或必须使用更复杂的东西?

例如,在 JavaScript 中,我可能有一个正则表达式 /^\d{3}\s\d{2}$/ 匹配包含 3 位数字后跟一个空格和另一个的字符串2 位数。我有一个字符串 "123a45" 我将此正则表达式应用于该字符串。这样做(例如,"123a45".match(/^\d{3}\s\d{2}$/))返回 null,因为正则表达式是不匹配。我怎样才能得到导致这种不匹配的第一个字符(在本例中 "a",索引为 3 的字符)?

一个用例可能是根据用于验证的某些正则表达式,将用户直接指向导致用户输入的字符串无效的字符。

最佳答案

您需要将正则表达式模式分解为部分匹配的所有可能匹配模式,以及从最长匹配到最短匹配(或无匹配)排序的此类模式列表。一旦你得到匹配,计算(部分)匹配的长度你就会得到导致不匹配的字符的位置。来自那个位置的一个字符长度的子字符串正是这个不匹配(如果有的话)后面的字符。如果没有不匹配,则返回空(子)字符串。

var s = "123a45";
alert(s.substr(s.match(/^(\d{3}\s\d{2}|\d{3}\s\d|\d{3}\s|\d{0,3})/)[1].length,1));

http://jsfiddle.net/ETWWS/

关于javascript - 输出导致与正则表达式不匹配的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com