正则表达式删除新的行和空格

时间:2016-03-04 04:34:15

标签: php regex replace match

我创建了一个正则表达式来删除空格,制表符,换行符等。

(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+

我的问题是它匹配一些空格和一些新行,而不是所有行。那是为什么?

我试过了:

(^[\r\n]*|[\r\n]+)[\s\t+]*[\r\n]+

但似乎仍然不匹配多个空格

Regex tester demo

4 个答案:

答案 0 :(得分:0)

我不太清楚你想在这里实现什么。但是,如果您在问题中说明,那么您只需要做任何事情就是替换\s。见regex101。 (为了清楚起见,请替换为*

你的正则表达式的问题是(除了它过于复杂;)结尾[\r\n]+需要CR / LF ,如果该行前面没有空line(^[\r\n]匹配以换行符开头的行 - 即空行),第一行中的[\r\n]+也需要CR / LF。

简而言之 - 它永远不会匹配两个连续的非空行。

问候。

答案 1 :(得分:0)

这将摆脱空白区域:

^(?:\s*)(\w+)$  

使用多行和全局修饰符(gm)

如果这解决了您的问题,请将问题标记为已解决。

答案 2 :(得分:0)

$input_lines = <<<EOD


test

aeee
eeeee
EOD;


$output = preg_replace('/(\s)*/', '$1', $input_lines);
var_dump($output);

结果:

string(16) "
test
aeee
eeeee"

如果我想删除所有换行符

$output = preg_replace('/(\s)*/', '', $input_lines);
var_dump($output);

结果:

string(13) "testaeeeeeeee"

答案 3 :(得分:0)

尝试关注

.replace(/\s+/g, "") .replace(/\n+/g, "")

添加 global 将替换所有位置。