Javascript 当前面有可选字符时,如何强制某些字符必须存在?
我想捕获符合以下条件的字符串:Javascript 当前面有可选字符时,如何强制某些字符必须存在?,javascript,regex,Javascript,Regex,我想捕获符合以下条件的字符串: 可能是空的 如果不为空,则最多必须有三位数字(->\d{1,3}) 可以选择后跟大写字母([a-Z]?) 可以选择后跟正斜杠(即/)(>\/?);如果后跟正斜杠,则必须有1到3位数字 (>\d{1,3}) 以下是一个有效的输入: 三十五 35A 35A/44 这是无效的输入: 34/(注意“/”后面没有数字) 我得到了以下满足条件1-3的结果。我如何处理4个条件?我的正则表达式有两次失败: 当有一个数字、正斜杠和一个数字(例如,77A/7 匹配,但当有一
\d{1,3}
)[a-Z]?
)/
)(>\/?
);如果后跟正斜杠,则必须有1到3位数字
(>\d{1,3}
)- 三十五
- 35A
- 35A/44
- 34/(注意“/”后面没有数字)
- 当有一个数字、正斜杠和一个数字(例如,
77A/7
- 匹配,但当有一个数字和正斜杠时不应匹配,例如
77/
/^(?:\d{1,3}[A-Z]?(?:\/\d{1,3})?)?$/
见
详细信息
-字符串的开头^
-可选的非捕获组:(?:\d{1,3}[A-Z]?(?:\/\d{1,3})?
-一到三位数字\d{1,3}
-可选大写ASCII字母[A-Z]?
-可选的非捕获组:(?:\/\d{1,3})
-a\/
字符/
-1到3位数字\d{1,3}
-字符串结束$
这应该行得通。你匹配了一个可选的斜杠,然后是一个可选的数字,从1到3;这匹配斜杠和任意数字的1-3的可选组合。此外,您的原始正则表达式可以在开始时匹配0位数字;我相信这是错误的,所以我修正了
var regex=/^(\d{1,3}[A-Z]{0,1}(\/\d{1,3})?$/g;
console.log(“77A/7-”+!!(“77A/7”).match(regex));
console.log(“77/-”+!!(“77/”).match(regex));
console.log(“35-”+!!(“35”).match(regex));
console.log(“35A-”+!!(“35A”).match(regex));
console.log(“35A/44-”+!!(“35A/44”).match(regex));
console.log(“35/44-”+!!(“35/44”).match(regex));
console.log(“34/-”+!!(“34/”).match(regex));
console.log(“A/3-”+!!(“A/3”).match(regex));
log(“[无字符串]-”+!!(”).match(regex))代码>它会起作用。请您更详细地讨论一下您的解决方案好吗?