如何将这三个正则表达式合并为一个?
How do I combine these three regex into one?
我正在尝试制作一个只接受以下内容的正则表达式:
最少 100 个字符,至少 1000 个字符,不允许使用字符“,',<,>,不允许连续使用两个句点。
这是我目前拥有的:
^.{100,1000}$
→ 100 到 1000 个字符
^[^"'<>]*$
→ 对于不允许的字符
^([^._]|[.](?=[^.]|$)|_(?=[^_]|$))*$
→ 不允许2个连续的点
如何将这个正则表达式合并为一个? ._.
这部分 [^._]
表示没有点或下划线,这部分 [.](?=[^.]|$)|_(?=[^_]|$)
匹配 .
或 _
后跟相反的字符串或字符串的结尾。
您可以使用排除 __
或 ..
的单个否定先行断言来编写模式
^(?!.*([._]))[^"'<>\n]{100,1000}$
说明
^
字符串开头
(?!
否定前瞻,断言右边的不是
.*([._])
捕获 .
或 _
并在它之后匹配捕获的相同字符 (意味着没有出现 ..
或 __
)
)
关闭前瞻
[^"'<>\n]{100,1000}
匹配除列出的任何字符 100-1000 次
$
字符串结束
Regex demo(对于演示,量词设置为 {10,100}
)
我正在尝试制作一个只接受以下内容的正则表达式:
最少 100 个字符,至少 1000 个字符,不允许使用字符“,',<,>,不允许连续使用两个句点。
这是我目前拥有的:
^.{100,1000}$
→ 100 到 1000 个字符^[^"'<>]*$
→ 对于不允许的字符^([^._]|[.](?=[^.]|$)|_(?=[^_]|$))*$
→ 不允许2个连续的点
如何将这个正则表达式合并为一个? ._.
这部分 [^._]
表示没有点或下划线,这部分 [.](?=[^.]|$)|_(?=[^_]|$)
匹配 .
或 _
后跟相反的字符串或字符串的结尾。
您可以使用排除 __
或 ..
^(?!.*([._]))[^"'<>\n]{100,1000}$
说明
^
字符串开头(?!
否定前瞻,断言右边的不是.*([._])
捕获.
或_
并在它之后匹配捕获的相同字符 (意味着没有出现..
或__
)
)
关闭前瞻[^"'<>\n]{100,1000}
匹配除列出的任何字符 100-1000 次$
字符串结束
Regex demo(对于演示,量词设置为 {10,100}
)