【问题标题】:How to separate string and number with decimal in PHP如何在PHP中用小数分隔字符串和数字
【发布时间】:2020-06-16 07:15:51
【问题描述】:

我有这个字符串值

$str="1231B1lB1.1lS1iC1C2.5";

我想用小数分隔字符串和数字。这是当前代码

preg_match_all("/[a-zA-Z]+|\d+/", $str, $matches);
print_r($matches[0]);

如果字符串没有“。”,它工作正常。 谁能建议如何使它与“。”一起使用。 ?

提前谢谢你。

【问题讨论】:

  • 你的预期输出是什么?
  • 转过来。第一个数字带点,然后是字母:[0-9\.]+|\w
  • 嗨,我希望得到 $matches[0]= 1231 $matches[1]= B $matches[2]= 1 $matches[3]= lB $matches[4]= 1.1
  • 感谢您的建议,它几乎可以按我的意愿工作,但在此示例中,iC 应该在同一个数组中。我怎样才能得到它?
  • 试试\d+(?:\.\d+)?|[^\W\d]+ regex101.com/r/L4SHsk/1

标签: php regex preg-match-all


【解决方案1】:

你可以匹配:

  • \d+(?:\.\d+)? 1+ 位,可选小数部分
  • |或者
  • [^\W\d]+ 使用 negated character class 匹配 1+ 个不带数字的单词字符

Regex demo

如果你只想匹配字符 A-Za-z,你可以使用字符类[A-Za-z]+

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 2014-12-17
    • 2014-01-10
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多