您好久以来一直在使用以下代码
$string = "/,One, Two, Three, Four,,, Five, , Six, , , Seven,./";
$regex = "/^[,\s]+|[\s,]+$/";
echo preg_replace($regex, ',', $string);
但它不再有效,因为用户无缘无故地输入逗号
所以我尝试使用这个正则表达式$regex = "/[\s,]+/"
效果非常好,但不是预期的。
我想要实现的是根本没有前导或结尾的特殊字符,只有字母数字字符。每个分离只有一个逗号,所以我的最终目标就像是
来自/,One, Two, Three, Four,,, Five, , Six, , , Seven,./
到One, Two, Three, Four, Five, Six, Seven
如何做到这一点?
答案 0 :(得分:1)
我认为使用preg_split
(带有标记PREG_SPLIT_NO_EMPTY
)和implode
是一种好方法:
$parts = preg_split('~[^[:alnum:],]*,[^[:alnum:]]*~', $str, -1, PREG_SPLIT_NO_EMPTY);
$result = implode(', ', $parts);
答案 1 :(得分:1)
使用trim()删除开头和结尾的符号,然后使用此正则表达式将错误的逗号用法转换为正确的用法。
您可以使用以下正则表达式执行此操作:
echo preg_replace("/((\W{1,}),(\W{1,}))/", ', ', trim($string, ',./'));
Regex101可以引导您了解正则表达式的工作原理。
答案 2 :(得分:0)
您可以使用org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
去除字符串开头和结尾处的句点,逗号和斜杠。然后你可以使用trim()
来清理中间逗号和空白的混合:
preg_replace()
修改如果$string = "/,One, Two, Three, Four,,, Five, , Thirty One, , Six, , , Seven,./";
$regex = "/\s*,[,\s]+/";
echo preg_replace($regex, ', ', trim($string, ',./'));
// "One, Two, Three, Four, Five, Thirty One, Six, Seven"
不够,您需要剪切所有非字母数字字符,您也可以使用表达式。这不是很好,但它有效:
trim()