php - 用Hebew,英文和字符验证图像路径的正则表达式
问题描述
我有图像路径之类的
טוסטר.jpeg
טוסטר(243).jpeg
טוסטר_234.jpeg
justImage.jpeg
justImage(2).jpeg
justImage_32.jpeg
justImage-12.jpeg
justImage-טר.jpeg
_asd_טוסטר_234.jpeg
/w/a/טוסטר.jpeg
/w/a/טוסטר_234.jpeg
/w/a/טוסטר(243).jpeg
我需要通过此类数据的验证。在路径中允许图像扩展名(无需验证确切的扩展名)、下划线、点、括号、英文字符、数字。图像可以具有类似 /a/b/someImageName.ext 的路径
我只做了这个正则表达式,但它只验证一个希伯来字符而不是整个字符串
#[-\w.\\\\/()]+$)|((?:\p{Hebrew}+|\w+)+?)#
这个正则表达式完美地适用于英语和我需要的所有情况,但是当添加希伯来语时效果不佳
#[-\w.\\/()]+$)#
例子
https://regex101.com/r/7bndbF/1
提前谢谢
解决方案
您错过了模式中的 unicode 修饰符(以及(
第一组的开头)。用它。
$pattern = '(^(/?[\p{Hebrew}\p{Latin}\pN()_.-]+)+$)uD';
图案细节
^
字符串的开头(
第一组开始/?
一个或没有/
[
人物课开始\p{Hebrew}
希伯来文\p{Latin}
拉丁文字\pN
数字字符(任何脚本)()_.-
特定字符
]
字符类结束+
最后一个
)
第一组结束+
最后一个$
修饰符
u
unicode (utf-8) 模式D
不允许在字符串结尾$
匹配\n
如果您不需要那么具体,您可以用\pL
(字母)替换脚本。
$pattern = '(^(/?[\pL\pN()_.-]+)+$)Du';
推荐阅读
- excel - 在excel中运行循环功能时遇到问题
- docker - 容器停止后,Docker compose 保持网络正常运行
- android - android权限问题:apk不被接受
- php - 为什么分类查询运算符在 Wordpress 中没有“LIKE”?
- image - JavaFX 在 ImageView 中显示照片不起作用
- c# - ASP.NET Core API - 从 Api 控制器重定向后不显示视图
- laravel - 迁移 - 如何为 json 设置默认值?(MySQL)
- python - Python Pandas ExcelWriter,消失的错误值
- xamarin - 自定义进度条未正确显示
- ocaml - 为什么我会收到带有类型注释但不是没有的“未使用匹配案例”警告?