正则表达式 - 从字符串中删除数字

时间:2014-10-18 07:28:38

标签: php regex

我希望找到一个正则表达式来从字符串中删除数字只有当任何数字之前的字符不是字母或空格时。 例如:

_123
(1234
.12345
?!8
hi 123
?? 1234

将是

_
(
.
?!
hi
??

另一方面:

aaa123
A1234
Z_L12345
..A8
aaa a123

将是:

aaa123
A1234
Z_L12345
..A8
aaa a123

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

[ ]\d+|(?<=[^a-zA-Z0-9\n])\d+

尝试使用empty string替换。请参阅演示。

http://regex101.com/r/mE6hO4/5

答案 1 :(得分:1)

搜索此正则表达式:

([^a-zA-Z0-9])(?!^)\d+

替换为:

$1

RegEx Demo

答案 2 :(得分:1)

为此使用 lookbehind断言,例如,对于behind of your match case, it can't be "A-Z" or "a-z" or "0-9"的情况使用外观,然后你应该从这些创建一个集合并将其插入到后面。

这是你的正则表达式

(?<=[^a-zA-Z0-9])\d+

这是你的演示

http://regex101.com/r/dN8sA5/21

然后你应该用NULL字符串替换它。

修改 使用这些方法中的一种

Trim你的最终字符串会更好
  1. 使用正则表达式: \s*(?<=[^a-zA-Z0-9])\d+\s*
  2. 替换字符串后,
  3. 使用修剪:,使用String.Trim删除字符串周围的空格。
  4. 我真的更喜欢第一种方法......

    有关look-behind的更多信息,请参阅:

    http://www.regular-expressions.info/lookaround.html