Php 验证逗号分隔列表但以';结尾的正则表达式是什么&';还有一句话
我可以提取到11.20,但在这之后逗号停止,我编写的正则表达式失败。我怎样才能写出这个表达式?我正在使用Php 验证逗号分隔列表但以';结尾的正则表达式是什么&';还有一句话,php,regex,Php,Regex,我可以提取到11.20,但在这之后逗号停止,我编写的正则表达式失败。我怎样才能写出这个表达式?我正在使用preg\u match\u all函数 输入字符串: 8, 8.40, 9.20, 10, 10.40, 11.20, 12 & 12.40 latenight 所需产出: Array ( [0] => 8, [1] => 8.40, [2] => 9.20, [3] => 1
preg\u match\u all
函数
输入字符串:
8, 8.40, 9.20, 10, 10.40, 11.20, 12 & 12.40 latenight
所需产出:
Array
(
[0] => 8,
[1] => 8.40,
[2] => 9.20,
[3] => 10,
[4] => 10.40,
[5] => 11.20,
[6] => 12,
[7] => 12.40,
)
印刷品
Array
(
[0] => 8
[1] => 8.40
[2] => 9.20
[3] => 10
[4] => 10.40
[5] => 11.20
[6] => 12
[7] => 12.40
[8] => latenight
)
足够近吗?不需要匹配逗号或符号,是吗?为什么不匹配你想要的呢
var str = "8, 8.40, 9.20, 10, 10.40, 11.20, 12 & 12.40 latenight";
var res = str.match( /\d+(\.\d{2})?|\w+$/g );
console.log( res ); //["8", "8.40", "9.20", "10", "10.40", "11.20", "12", "12.40", "latenight"]
//RegExp parts
\d+ - 1 or more digits
( - start optional group
\. - a literal decimal point
\d{2} - exactly 2 digits
)? - end optional group
| - or
\w+$ - a word at the end of the string
如果你不想把这个词放在末尾,那么就把最后一句删去
var str = "8, 8.40, 9.20, 10, 10.40, 11.20, 12 & 12.40 latenight";
var res = str.match( /\d+(\.\d{2})?/g );
console.log( res ); //["8", "8.40", "9.20", "10", "10.40", "11.20", "12", "12.40"]
这句话,
[0-9]*(?:\.?[0-9]+)?(?=\s*&|\s*,)
可能也有用
如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况
这个答案很好,但是,正如问题中所示,“latenight”不应该出现在数组中。@Qqwy:有趣的是,我第一次尝试这个答案时与结尾的单词不匹配-我已经添加了原始版本您的正则表达式是完美的,但我必须给出另一个正确答案,因为它是一个带有php标记的问题。非常感谢
[0-9]*(?:\.?[0-9]+)?(?=\s*&|\s*,)
$re = '/[0-9]*(?:\.?[0-9]+)?(?=\s*&|\s*,)/s';
$str = '8, 8.40, 9.20, 10, 10.40, 11.20, 12 & 12.40 latenight';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);