Regex 正则表达式:不能以“结束”或“开始”&引用&“&引用;必须分开,必须至少1“&引用;但不超过&引用;
我可以知道如何创建具有以下规则的正则表达式吗Regex 正则表达式:不能以“结束”或“开始”&引用&“&引用;必须分开,必须至少1“&引用;但不超过&引用;,regex,Regex,我可以知道如何创建具有以下规则的正则表达式吗 不能以“;”结束或开始 “;”必须分开 必须至少1“,但不超过3” 范例 1.sdsdd;sd-有效 2.sdasd;dasd;-无效的 3.sd;渠务署;dasd;dasd;-无效的 4.dasd;dasd;-无效假设perl兼容,因为您没有指定 /^[^;]+(?:;[^;]+){1,3}$/ 工作原理: ^锚定到行的开头 [^;]匹配任何不匹配的字符 +修饰符至少与以前的一种类型(一种或多种)匹配 (?:)是一个非捕获分组。您还可以使用()进行
4.dasd;dasd;-无效假设perl兼容,因为您没有指定
/^[^;]+(?:;[^;]+){1,3}$/
工作原理:
^
锚定到行的开头
[^;]
匹配任何不匹配的字符
+
修饰符至少与以前的一种类型(一种或多种)匹配
(?:)
是一个非捕获分组。您还可以使用()
进行捕获分组,在这种情况下,这并不重要
;[^;]+
匹配文字分号,后跟1个或多个“非分号”
{1,3}
。格式为{m,n}
的大括号将要求至少m
,但不超过前一序列的n
重复(在这种情况下,(?:;[^;]+)
)
最后,
$
锚定到行的末尾。假设perl兼容,因为您没有指定
/^[^;]+(?:;[^;]+){1,3}$/
工作原理:
^
锚定到行的开头
[^;]
匹配任何不匹配的字符
+
修饰符至少与以前的一种类型(一种或多种)匹配
(?:)
是一个非捕获分组。您还可以使用()
进行捕获分组,在这种情况下,这并不重要
;[^;]+
匹配文字分号,后跟1个或多个“非分号”
{1,3}
。格式为{m,n}
的大括号将要求至少m
,但不超过前一序列的n
重复(在这种情况下,(?:;[^;]+)
)
最后,
$
将锚定到行的末尾。如果指定要匹配的内容而不是不想匹配的内容,则可能是最简单的。如果分号之间的内容应该包含大写和小写字母和数字,那么以下内容就足够了:
/[A-Za-z0-9](;[A-Za-z0-9])*/
读作,匹配一个标记,然后是由一个分号分割的尽可能多的标记 如果指定要匹配的内容而不是不想匹配的内容,则可能最简单。如果分号之间的内容应该包含大写和小写字母和数字,那么以下内容就足够了:
/[A-Za-z0-9](;[A-Za-z0-9])*/
读作,匹配一个标记,然后是由一个分号分割的尽可能多的标记 这是您的正则表达式:
^(?!.*;;)(?=(.*;){1,3}.*$)[^;].*[^;]$
此正则表达式对每个标准使用单独的部分:
开始输入^
断言输入不包含(?!*;)
;;的“负面展望”代码>任意位置
断言输入包含1-3(?=(.*){1,3})
代码>字符
以非[^;].[^;]
开头和结尾代码>字符
输入结束$
- regex实际上是“只读”代码,但如果您将其分解,则有可能在以后阅读它
- 如果您以后更改/删除/添加规则,如果像这样分段,正则表达式更容易维护
^(?!.*;;)(?=(.*;){1,3}.*$)[^;].*[^;]$
此正则表达式对每个标准使用单独的部分:
开始输入^
断言输入不包含(?!*;)
;;的“负面展望”代码>任意位置
断言输入包含1-3(?=(.*){1,3})
代码>字符
以非[^;].[^;]
开头和结尾代码>字符
输入结束$
- regex实际上是“只读”代码,但如果您将其分解,则有可能在以后阅读它
- 如果您以后更改/删除/添加规则,如果像这样分段,正则表达式更容易维护
有关“环顾四周”和其他高级正则表达式概念的解释,请参见为什么正则表达式是解决此问题的唯一合适工具。您最喜欢的编程语言中的几行代码可能比正则表达式更容易理解(尽管正则表达式可能是这几行代码的一部分)。@Adam Michalcin-是的,我可以使用“/”拆分字符串并确保少于4个数组,但我只想尝试一些不同的方法。为什么正则表达式是解决这个问题的唯一合适工具。您最喜欢的编程语言中的几行代码可能比正则表达式更容易理解(尽管正则表达式可能是这几行代码的一部分)。@Adam Michalcin-是的,我可以使用“/”拆分字符串确保数组少于4个,但我只想尝试一些不同的东西。我正在解释:)我会先做解释。在OP唠叨了30分钟后,一次递增地显示一个字符的答案。我还没有机会测试这个,但提前谢谢。只是好奇我如何“接受”答案?投票箭头下有一个复选框,当你投票时,浏览器会提示你接受答案。要接受答案,只需单击复选框。我建议你检查一下你以前的问题,并将其中一些问题标记为已接受答案,这样你会得到更多的帮助。是的,我刚刚做了~谢谢。我将研究您的解决方案,但感谢您为我所做的巨大努力:我正在解释它:)我会做e