我正在尝试通过 preg_replacing 过滤字符串。除了数字和点之外的任何内容,并且点前不超过 5 个数字。wamp (UptoDate) 下的 PHP 5.4.3。
好搭配:
- 0.01
- 0.1
- 12345.11
- 12345.1
- 1
- 12345
坏匹配:
- 0,10
- 0,1
- 12345,11
- 12345,1
- 123456
我遇到的第一个问题是我无法删除 (,) 逗号,我只想保留 (.) 点作为分隔符。请记住,这是一个价格字符串。Php 似乎没有用 (,) 逗号计算,所以我希望输入只能用 . 而不是逗号。所以我使用(^),否定字符类,然后是0-9。. 然后我添加要匹配的字符数。我在 1-5 之间(1 或 2 或 3 或... 5
我究竟做错了什么。
这是我一直用来帮助的信息: http ://www.regular-expressions.info/reference.html http://www.expreg.com/options.php
<?php $string = 'asd321asd321df564d.fasd321asd12';
$string = cleanabc123($string);
function cleanabc123($data) { $data =
preg_replace("/([^0-9\s\.]){1,5}/u", "", $data); return $data; }
// This will be 'username' now echo $string; ?>