Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式如何从文本中删除所有长破折号/短划线和普通破折号?_Javascript_Php_Regex - Fatal编程技术网

Javascript 正则表达式如何从文本中删除所有长破折号/短划线和普通破折号?

Javascript 正则表达式如何从文本中删除所有长破折号/短划线和普通破折号?,javascript,php,regex,Javascript,Php,Regex,我正在尝试从文本中删除长破折号和普通破折号。我可以删除单个普通破折号,但长破折号有问题。我也可以删除它们,但这样会导致文本中的数字出现问题 例如,文本:asdasd2 34 56------------------ 我使用类似于[\u2014\-]的正则表达式,这会删除所有长破折号和普通破折号,但也会删除所有数字。[\-]删除正常破折号时没有问题。有人能帮你用正确的正则表达式吗?我想删除文本中所有类型的破折号,并将其替换为零。提前感谢下面的片段可以帮助您 <?php $string =

我正在尝试从文本中删除长破折号和普通破折号。我可以删除单个普通破折号,但长破折号有问题。我也可以删除它们,但这样会导致文本中的数字出现问题

例如,文本:
asdasd2 34 56------------------


我使用类似于[\u2014\-]的正则表达式,这会删除所有长破折号和普通破折号,但也会删除所有数字。[\-]删除正常破折号时没有问题。有人能帮你用正确的正则表达式吗?我想删除文本中所有类型的破折号,并将其替换为零。提前感谢

下面的片段可以帮助您

<?php

$string = "asdasd2 34 56 ——————————————-";
$string = preg_replace("/(?:(?=—|\-).)+/", "", $string);
echo $string; // asdasd2 34 56

?>
但是由于某种原因,我得到了一个错误或者一个带有这个奇怪字符的字符串(�). 这就是我提出第一个解决方案的原因。

(假设我们讨论的是
php
,因为您的正则表达式在
js
中工作)

试试这个:
[\p{Pd}]+
[\-\-]+

此处
\p{Pd}
匹配任何类型的连字符或破折号。请参阅

输入:
asdasd2 34 56--------------------------------


输出:
asdasd2 34 56

您也可以使用字符本身而不是其十六进制代码

'asdasd2 -34 56 ——————————————-'.replace(/[—-]/g, "")
//output "asdasd2 34 56 "

要在php中标记所有长破折号和普通破折号,请执行以下操作:

[\x{2014}-]+

问题是PHP不支持\uFFFF匹配Unicode代码点。

$var=str\u replace('-',''.$string);
不起作用。它只适用于
[]
方括号。我尝试了
[\-]
但不起作用。
[\-]
适用于普通虚线。
[\u2014]
适用于长破折号,但也会删除所有数字。关于
$remove=array('-','-');$test='asdasd2 34 56-------------';echo str_replace($remove',,$test);
var str=“asdasd2 34 56--------------”。replace(/[\u2014\-]/g,”);str;
var str=“asdasd2 34 56--------------------”。替换(/[\u2014\-]/g,”);str;
在我的情况下不起作用。
[\u2014\-]
也删除所有数字。我认为应该在这个正则表达式中添加其他内容来保留这些数字。
\p{Pd}
是我的第一个猜测/尝试,但在得到一个像这样的奇怪字符串后,我放弃了��������������\u或\\u不受支持-您可以使用\x{2014}代替,但是,我无法使用ittry打印字符串并查看字符是否显示良好。嗯,它们没有按预期显示。正如我前面所说:)编码已设置为UTF-8。也许我应该买一个新的浏览器或者试试jQuery;))PHP中没有
replace()
函数
[\x{2014}-]+