php - 允许空格、unicode 字母、数字、下划线、破折号和逗号吗?

标签 php regex unicode preg-match

我对 preg 主题还很陌生,我正在使用这个 preg_match 条件来检查用户是否输入了空格、unicode 字母、数字、下划线或破折号:

if(preg_match("/[^\040\pL\pN_-]/u", $term)) {

但现在我想允许使用逗号。所以我尝试了这个:

if(preg_match("/[^\040\pL\pN,_-]/u", $term)) {

它确实有效,我只是想知道为什么。我只是想更好地理解它。例如,为什么必须是 ,_- 而不是 -_, 才能允许逗号?

如果有人能一步一步向我解释这一点,我将非常感激。

最佳答案

这是因为 - 用于方括号中的范围([] -> 字符类)。从manual开始:表示字符范围,例如:0-9a-z

所以只要你把它放在最后就可以了,不必逃避它。在所有其他情况下,您必须使用反斜杠将其转义,例如\-

意思是:

,_-  //At the end
_,-  //At the end
\-,_ //Escape it
\-_, //Escape it
,\-_ //Escape it
_\-- //Escape it

关于php - 允许空格、unicode 字母、数字、下划线、破折号和逗号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550203/

相关文章:

html - unicode 表情符号未在 Chrome 上显示

ruby - 在 Ruby 中将 Unicode 数字转换为整数

javascript - 如何在我的输入表单中阻止 html 和 url

php - 防止重复行插入 php/mysql

php - 从 ftp 获取字符串数据

javascript - JQuery 发布未在 PHP 文件中运行代码

javascript - 错误: invalid quantifier - RegExp within JavaScript

正则表达式解析docker标签?

Python:正则表达式函数通过电子邮件字符串解析并返回元组或如果输入无效则返回 ValueError

delphi - 如何选择Delphi 2007的迁移路径