php - 允许数字和字符之间连字符但删除字符之间连字符的正则表达式

标签 php regex

我正在尝试编写一个正则表达式,允许在数字和字符之间使用连字符 (-) 但删除字符之间的连字符并将其替换为 PHP 字符串中的空格。我是正则表达式的初学者不知道如何为此编写正则表达式任何人都可以帮助

这是我需要的,我在 PHP 中有这样的字符串

$string ="Al-Abbas - Manama - 100" or
$string ="100 - Al-Abbas - Manama"

应用正则表达式后我需要的输出必须是这样的

Al Abbas Manama - 100
100 - Al Abbas Manama 

还有其他办法吗

最佳答案

你可以使用这个正则表达式:

$string ="Al-Abbas - Manama - 100"

$repl = preg_replace('/\d\h*-\h*(*SKIP)(*F)|-(?!\h*\d)/', ' ', $string);
  • \d\h*-\h*(*SKIP)(*F) 如果连字符出现在数字后面,则匹配失败
  • (?!\h*\d) 如果连字符旁边有数字,断言将失败

RegEx Demo

关于php - 允许数字和字符之间连字符但删除字符之间连字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605272/

相关文章:

php - 如何在 PHPWord 中更改纸张大小

javascript - 将 Json 写入现有文件 .json,不带 "syntax errors"

php - 使用php artisan migrate时找不到驱动程序错误

java - 为什么 Pattern.quote 总是返回带引号的字符串?

c# - 用于 VS 查找和替换的正则表达式 - 清空其他 block

C# 使用字典替换正则表达式匹配的模式

php - 如何在 PHP wordpress 中放置“调用电话”按钮?

java - 如何使用 Java 中的正则表达式匹配函数来匹配具有元字符的字符串

javascript - 根据模式将字符串分成 block

php - CodeIgniter 3.0 的登录系统