我正在寻找一个正则表达式来仅从包含数字的单词中替换破折号 (-)
例子
字符串:xyz 1-2-3-4 应该变成 xyz 1234(xyz 保持不变,1-2-3-4 替换破折号)
字符串:1-2-3-4 应该变成 1234
string : xyz 应该保持 xyz
任何帮助都会得到帮助
我正在寻找一个正则表达式来仅从包含数字的单词中替换破折号 (-)
例子
字符串:xyz 1-2-3-4 应该变成 xyz 1234(xyz 保持不变,1-2-3-4 替换破折号)
字符串:1-2-3-4 应该变成 1234
string : xyz 应该保持 xyz
任何帮助都会得到帮助
preg_replace('/(?<=\d)-(?=\d)/', '', $string)
找到所有前面有一个数字和后面跟着一个数字的破折号,然后对它们进行核对。
这将对您有所帮助;
<?php
$inputStr = 'x-y-z 1-2-3-4 x-y-z';
$outputStrWords = [];
$inputStrWords = explode(' ', $inputStr);
foreach ($inputStrWords as $key => $word) {
$charactersInWord = explode('-', $word);
$allCharsDigit = true;
foreach ($charactersInWord as $char) {
$allCharsDigit &= is_numeric($char) ? true : false;
}
$outputStrWords[$key] = $word;
if($allCharsDigit) {
$outputStrWords[$key] = str_replace('-', '', $word);
}
}
$outputStr = implode(' ', $outputStrWords);
echo $outputStr; exit;
试试这个:
$x = preg_replace('/(?=(^|\s)\d+)-|-(?=\d+(\s|))/', '', 'x-y-z 1-2-3-4');
你可以这样做
$string = preg_replace('/-/',' ',$string);
你也可以不使用正则表达式
$string = str_replace('-','',$string);
$string = strtr($string, '-', '');