1 个字符串的正则表达式问题
regular express issue with 1 character string
我只允许在字符串中使用 alpha-numeric
、_
和 -
值,并删除所有其他字符。它工作正常但是当字符串大小为 1 个字符时(不管它的 alphabet
或 numeric
或 _
或 -
),我得到空值而不是单个章程。
这里是示例代码
$str = 1;
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
或
$str = 'a';
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
我也测试了 PHP 的多个版本
您正在删除字符串中除 ASCII 字母、数字、_
和 -
以外的任何字符。您需要删除锚并将正字符 class 转换为否定字符:
$str = preg_replace('/[^\w-]+/', '', $str);
参见PHP demo online and a regex demo。
详情
[^
- negated character class 的开始
\w
- 一个单词字符:字母、数字或 _
-
- 一个连字符
]
- 字符结束 class
+
- 量词:重复 1 次或多次。
我只允许在字符串中使用 alpha-numeric
、_
和 -
值,并删除所有其他字符。它工作正常但是当字符串大小为 1 个字符时(不管它的 alphabet
或 numeric
或 _
或 -
),我得到空值而不是单个章程。
这里是示例代码
$str = 1;
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
或
$str = 'a';
$str = preg_replace('/^[a-zA-Z0-9_-]$/', '', $str);
var_dump($str);
我也测试了 PHP 的多个版本
您正在删除字符串中除 ASCII 字母、数字、_
和 -
以外的任何字符。您需要删除锚并将正字符 class 转换为否定字符:
$str = preg_replace('/[^\w-]+/', '', $str);
参见PHP demo online and a regex demo。
详情
[^
- negated character class 的开始\w
- 一个单词字符:字母、数字或_
-
- 一个连字符
]
- 字符结束 class+
- 量词:重复 1 次或多次。