如何匹配正则表达式/JavaScript 中出现的特定长度
How to match specific length of occurrences in RegEx/JavaScript?
我有以下变量:
var arg = '--test';
arg
的值可以从一个或两个连字符开始:-
或--
,但不能更多。
处理这个问题,我想我应该对这个问题做正则表达式。
到目前为止,我的代码是:
if(arg.substr(0, 2).match(/-{1,2}/gi)) {
// doing my stuff here...
}
我所做的是切片字符串的前两个字符,并尝试测试切片字符串中的连字符,但 RegEx 不是我的强项,所以这就是我卡住的地方。
基本上,我想测试字符串/参数中是否至少有一个或最多两个-
连字符。
试试这个正则表达式:
/^--?(?!-)/
工作原理:
-
^
选择字符串的开头 -
-
选择第一个连字符 -
-?
选择可选的第二个连字符 - 如果存在第三个连字符,则
(?!-)
失败
要选择-
或--
,您可以使用 wither of :
-
--?
(3
位数字) -
-{1,2}
(6
位数字)
我使用了第一种方法,因为它更短,更容易阅读
您可以在^-{1,2}
后使用(?!-)
负前瞻来限制连字符的数量:
/^-{1,2}(?!-)/
查看正则表达式演示
模式细分:
-
^
- 字符串的开头 -
-{1,2}
- 一个或两个连字符 -
(?!-)
- 如果开头的 2 个连字符后有一个连字符,则匹配失败。
请注意,要检查正则表达式是否与 JS 中的给定字符串匹配,您最好使用RegExp#test()
方法,请参阅下面的演示。
function tst() {
var arg = document.getElementById("test").value;
if (/^-{1,2}(?!-)/.test(arg)) { // <======== Check if a string matches the pattern
document.getElementById("res").innerHTML = arg + " matched";
} else {
document.getElementById("res").innerHTML = arg + " failed to match";
}
}
<form>
<input id="test" value="---test" placeholder="<Input a test string>"/>
<input type="submit" onclick="tst()" id="r"/>
<div id="res"/>
</form>
相关文章:
- JavaScript正则表达式不匹配
- JS 正则表达式以匹配 HTML 标记中不是 的字符串
- 正则表达式以匹配评论
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 为什么我的捕获括号之外的字符包含在我的正则表达式的匹配项中
- 如何在正则表达式中匹配空格、换行符
- 我如何正则表达式以匹配以下内容 - Javascript
- 正则表达式使匹配不那么贪婪
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- JavaScript正则表达式代码匹配字符和数字的问题
- 我该如何编写一个正则表达式来匹配字符串后面的值(到下一个逗号)
- 正则表达式以匹配美国电话模式
- 正则表达式不匹配序列中的两个相同字符
- JavaScript 正则表达式以匹配 URL
- 正则表达式以匹配 HTML 范围标记中包含的多个单词
- 正则表达式模式匹配特定单词
- JavaScript正则表达式无法匹配给定的字符串
- 正则表达式保留/匹配任何以特定字符开头的单词
- 正则表达式以匹配单词,除非它们前面有字符
- 正则表达式以匹配逗号分隔的主机名