正则表达式匹配没有尾随/前导空格+最小/最大长度的任何字符
Regex to match any character without trailing / leading whitespace + min / max length
我尝试找出如何通过 preg_match 使用以下值来匹配以下值:
^[\S].*[\S]{3,10}$
不幸的是,最小值从 4 开始起作用,而最大值 10 被完全忽略,因为该模式仍然在 11 的长度上运行。
- 不允许前导和尾随 spaces
- 允许里面的任何字符
- 字符内允许space
- 强制执行最少 3 次和最多 10 次(无效)
可用于的测试集:https://www.phpliveregex.com
[
[
"Test",
true
],
[
"Test Test",
true
],
[
"Test-Test",
true
],
[
"Test'Test",
true
],
[
"Test,Test",
true
],
[
null,
false
],
[
" ",
false
],
[
" Test ",
false
],
[
"12",
false
],
[
"12345678901",
false
]
]
感谢您在高级阶段的帮助
您可以使用
^(?=.{4,10}$)\S.*\S$
详情
^
- 字符串开头
(?=.{4,10}$)
- 除换行字符外的四到十个字符允许到字符串末尾
\S
- 非空白字符
.*
- 除换行字符外尽可能多的 0 个或更多字符
\S
- 非空白字符
$
- 字符串结尾。
我尝试找出如何通过 preg_match 使用以下值来匹配以下值:
^[\S].*[\S]{3,10}$
不幸的是,最小值从 4 开始起作用,而最大值 10 被完全忽略,因为该模式仍然在 11 的长度上运行。
- 不允许前导和尾随 spaces
- 允许里面的任何字符
- 字符内允许space
- 强制执行最少 3 次和最多 10 次(无效)
可用于的测试集:https://www.phpliveregex.com
[
[
"Test",
true
],
[
"Test Test",
true
],
[
"Test-Test",
true
],
[
"Test'Test",
true
],
[
"Test,Test",
true
],
[
null,
false
],
[
" ",
false
],
[
" Test ",
false
],
[
"12",
false
],
[
"12345678901",
false
]
]
感谢您在高级阶段的帮助
您可以使用
^(?=.{4,10}$)\S.*\S$
详情
^
- 字符串开头(?=.{4,10}$)
- 除换行字符外的四到十个字符允许到字符串末尾\S
- 非空白字符.*
- 除换行字符外尽可能多的 0 个或更多字符\S
- 非空白字符$
- 字符串结尾。