PHP正则表达式删除除字符代码以外的所有数字
根据线程,在PHP中删除字符串中的所有数字非常容易 例如:PHP正则表达式删除除字符代码以外的所有数字,php,regex,Php,Regex,根据线程,在PHP中删除字符串中的所有数字非常容易 例如: $no_digits = preg_replace('/\d/', '', 'This string contains digits! 1234'); 但是,我不希望删除HTML字符代码中的数字,例如: ) © 如何让正则表达式忽略HTML字符代码中的数字?i、 e.夹在和之间的数字字符?您可以使用(*SKIP)(*F)动词: echo preg_replace('/&#\d+;(*SKIP
$no_digits = preg_replace('/\d/', '', 'This string contains digits! 1234');
但是,我不希望删除HTML字符代码中的数字,例如:
)
©
如何让正则表达式忽略HTML字符代码中的数字?i、 e.夹在和之间的数字代码>字符?您可以使用(*SKIP)(*F)
动词:
echo preg_replace('/&#\d+;(*SKIP)(*F)|\d+/', '',
'This string contains digits! 1234 ) © 5678');
//=> This string contains digits! ) ©
\d+;(*SKIP)(*F)
将跳过匹配id regex matches和#\d+代码>模式
或者,您可以使用lookarounds:
echo preg_replace('/(?<!&#)\d+|\d+(?!;)/', '',
'This string contains digits! 1234 ) © 5678');
echo preg\u replace('/(?您可以使用(*SKIP)(*F)
动词:
echo preg_replace('/&#\d+;(*SKIP)(*F)|\d+/', '',
'This string contains digits! 1234 ) © 5678');
//=> This string contains digits! ) ©
和#\d+;(*跳过)(*F)
将跳过匹配id正则表达式匹配的和#\d+;
模式
或者,您可以使用lookarounds:
echo preg_replace('/(?<!&#)\d+|\d+(?!;)/', '',
'This string contains digits! 1234 ) © 5678');
echo preg\u replace('/(?您可以使用
var output = Regex.Replace(input, @"[\d-]", string.Empty);
***\d
标识符仅与任何数字字符匹配。您可以使用
var output = Regex.Replace(input, @"[\d-]", string.Empty);
***\d
标识符仅与任何数字字符匹配。您可以使用“向后看”和“向前看”
$no_digits = preg_replace('/(?<!&#)\d+(?=[^;\d])/', '', 'This string contains ) digits! 1234');
$no_digits=preg_replace(')/(?您可以使用“向后看”和“向前看”
$no_digits = preg_replace('/(?<!&#)\d+(?=[^;\d])/', '', 'This string contains ) digits! 1234');
$no_digits=preg_replace('/(?作为一个选项,您可以将代码转换为UTF-8编码(如果尚未转换为UTF-8),然后使用HTML_entity_decode()将HTML实体转换为相应的字符
,然后使用regexp删除数字,然后,如果需要,使用htmlspecialchars()
,再次将特殊字符转换为相应的实体(在UTF-8中,通过htmlspecialchars()
,实际上只需转义一小部分特殊字符即可),然后将代码转换回原始编码(如果原始字符串不是UTF-8格式)。作为一个选项,您可以将代码转换为UTF-8编码(如果尚未转换为UTF-8),然后使用HTML\u entity\u decode()将HTML实体转换为相应的字符
,然后使用regexp删除数字,然后,如果需要,使用htmlspecialchars()
,再次将特殊字符转换为相应的实体(在UTF-8中,通过htmlspecialchars()
,实际上只需转义一小部分特殊字符即可),然后将代码转换回原始编码(如果原始字符串不在UTF-8中)。php是否将*F
视为*FAIL?是的*F
只是*FAIL
@sln的快捷方式确实,(*F)
=(?!)
=(*FAIL)
。(*S)
(*SKIP)呢
?不,这在PCREDoes php中无效请将*F
视为*FAIL?是的*F
只是*FAIL
@sln的一个快捷方式的确,(*F)
=(?!)
=(*FAIL)
。那么(*S)
=(*SKIP)呢
?不,这在pcrex中无效。您可能还需要包括十六进制版本。并且您可能只需要使用整个实体构造,而不需要具体说明。“(?i:[&%](?:[a-z]+|(?:\#(?:[0-9]+|x[0-9a-f]+);(*跳过)(*失败)\d+)~'
您可能还需要包含十六进制版本。而且您可能只需要使用整个实体构造而不需要具体说明。'~(?i:[&%](?:[a-z]+|(?:\\#(?:[0-9]+|x[0-9a-f]+);(*跳过)(*失败)\\d+)~'
也就是javascript,OP是PHP格式的。同样\d
只匹配0-9
,一位数,需要一个用于十/百/千/等的量词。也就是javascript,OP是PHP格式的。同样\d
只匹配0-9
,一位数,需要一个用于十/百/千/等的量词。这(?!\d+
段向前查找不&
,然后匹配\d
,这是一个“向后查找”。正则表达式引擎首先查找\d
。一旦找到,它向后查找,看看它是否不&
,然后它将触发\d
找到。这是一个相对的东西。:-pNo这是向前看的。哈哈啊哈,我明白你们的意思了。我错过了一个
。干杯。好的,所以(?遇到与@anubhava的交替正则表达式相同的问题。您已拆分了无法单独工作的条件。如果其中任何一个单独满足,但不能同时满足,则将丢失有效的\d
…例如:它将不匹配555
;也不匹配77
x此(?!&)\d+
段向前查找不&
,然后匹配\d
,这是一个“向后查找”。正则表达式引擎首先查找\d
。一旦找到,它向后查找,看看它是否不&
,然后它将触发\d
找到。这是一个相对的东西。:-pNo这是向前看的。哈哈啊哈,我明白你们的意思了。我错过了一个
。干杯。好的,所以(?遇到与@anubhava的交替正则表达式相同的问题。您分割了无法单独工作的条件。如果其中任何一个单独满足,但不能同时满足,则将丢失有效的\d
…例如:它将不匹配555
;也不匹配77
x