我需要一个正则表达式,它基本上可以检查字符串之后的空格,换行符等。
条件是,
.
, _
, -
, {{字符串中的1}} 即+
,@hello.world
,@hello_world
等。@helloworld
,@helloworld.<space>
,@helloworld-<space>
等必须解析为@helloworld.?
我现有的RegEx为@helloworld
,效果非常好条件#1 ,但似乎还有问题条件#2
我在/@([A-Za-z0-9+_.-]+)/
解决方案:
preg_replace()
这很有效。
使用
进行测试答案 0 :(得分:1)
您可以使用word boundaries轻松找到字母数字字母和非字母数字字母之间的位置:
$str = preg_replace('#@[\w+.\-]+\b#', '[[$0]]', $str);
答案 1 :(得分:1)
这是一个想法:
strrev
反转字符串strcspn
查找不包含任何字母数字字符的反向字符串的最长前缀substr
<强> See it in action 强>
我没有考虑将字符串中的合法字符限制为某个子集的任何要求,但您可以使用正则表达式(甚至strspn
,这可能会更快)。
答案 2 :(得分:0)
原因是因为它正在读取整个字符串。如果你想要它解析字母数字部分之后的所有内容你可能必须这样做并结束(explode());并运行它以确保它无效并且如果它无效然后从等式中删除它,但是你必须检查每个可能的爆炸点的结束,即。, - ,〜等
然后,您可能遇到的另一个陷阱是,在项目或任何具有字母数字值的情况下,它可能只是从最后一个字母数字字符后解析所有内容。
很抱歉这没什么用,但我认为大声思考确实有帮助。