字符串后跟确切字符数的Javascript正则表达式
我正在寻找与以下ID匹配的正则表达式:字符串后跟确切字符数的Javascript正则表达式,javascript,jquery,regex,match,Javascript,Jquery,Regex,Match,我正在寻找与以下ID匹配的正则表达式: path-0 path-1 path-2 并且是否将ID与较大数量的字符匹配,例如: path-0-0 path-0-1 目前我有以下代码块: let数组=[ “路径0”、“路径1”、“路径2”、“路径0-0”、“路径0-1” ]; 设reg=/[^path-]{6}/; $.each(数组、函数(索引、值){ if(注册测试(值)){ 控制台日志(注册测试(值),值); }否则{ 控制台错误(注册测试(值),值); } }); 您要寻找的是一种检查
path-0
path-1
path-2
并且是否将ID与较大数量的字符匹配,例如:
path-0-0
path-0-1
目前我有以下代码块:
let数组=[
“路径0”、“路径1”、“路径2”、“路径0-0”、“路径0-1”
];
设reg=/[^path-]{6}/;
$.each(数组、函数(索引、值){
if(注册测试(值)){
控制台日志(注册测试(值),值);
}否则{
控制台错误(注册测试(值),值);
}
});代码>
您要寻找的是一种检查模式/-\d+/
是否只出现一次的方法。请注意,这里的符号+
用于将数字与多个数字进行匹配。不过,您需要检查字符串结尾,它由$
符号表示,与^
表示其开头的方式相同。适用于您的最佳正则表达式选项是:
let reg = /^path-\d+$/;
首先,要匹配字符串的开头
^
然后是“路径”一词,后跟破折号
^path-
然后是一个字符,仅此而已(因此,行尾)
根据Arthur的评论,如果您的意图是允许ID在“path-”之后有一个以上的数字,您可以通过在\d
后面加上+
来指定需要1个或多个数字,如下所示:
^path-\d+$
简明的
根据我的原始评论…
您的模式[^path-]
不起作用的原因是它匹配集合中不存在的任何字符,因此除了ahpt-
(我重新排列了字符,以便您更好地理解它所说的内容)。当您想说匹配此集合中的任何内容(或不匹配)时,将使用字符集
例如,使用集合的示例是^path-[0-9]$
。这表示*匹配ASCII表中0
和9
之间的字符,其中包括0123456789
。定义相同字符集的另一种方法是使用速记标记\d
(它指定相同的字符0
到9
)
集合开头使用的插入符号^
指定集合应将这些字符取反。在您的示例中使用它的一个示例是^path-[^\D]$
,它基本上是一个双负数,用于指定任何不是数字的内容(或简单地放置任何数字)。集合之外的任何位置(假设未转义)^
表示字符串开头的断言位置
密码
let数组=[
“路径0”、“路径1”、“路径2”、“路径0-0”、“路径0-1”、“路径12”
];
let reg=/^path-\d$/;
$.each(数组、函数(索引、值){
if(注册测试(值)){
控制台日志(注册测试(值),值);
}否则{
控制台错误(注册测试(值),值);
}
});代码>
这个^path-\d$
?Just FYI是一个了解正则表达式模式的好网站。FYI[^path-]
意味着匹配除集合中的字符以外的任何字符。因此,任何不是路径-
中的字符,这就是为什么您得到所有错误的原因ctwheels的解决方案正在工作,谢谢@我在找工作,我把我的评论转换成下面的答案(有两个片段的那一个)与path-10OP没有要求的答案不匹配。实际上,他们说“并且不匹配具有更大字符数的ID”,如果您认为在ID的上下文中,您可以确定地推断ID可能是大于0的任何整数,而不受示例的限制。只是为了防止将来的错误,我理解你的观点,只是为了给你机会来改进你的答案。我认为很明显,问题的意图是,检查下面的例子,“更多的字符数”是关于非数字字符。
^path-\d+$
^path-\d$