JavaScript中与PHP中用于标点符号的正则表达式相等的内容

3

我正在使用以下PHP代码行从字符串中删除标点符号:

$key = preg_replace("/\p{P}/u", "", $key);

有人知道如何在Javascript/jQuery中做同样的事情吗?

我知道你可以使用jQuery的replace()来替换字符串,就像PHP的preg_replace()一样。我只是不知道要使用什么正则表达式。


你看过这个问题吗?https://dev59.com/e2855IYBdhLWcg3weEGJ - Decker W Brower
1
JavaScript没有标点符号表达式。这可能会有所帮助:https://dev59.com/IWsz5IYBdhLWcg3w6MRS - mask8
@Decker - 我需要确保表达式完全匹配。我认为那里的第二个答案可能适合我。谢谢。 - liz
2个回答

1

类似这样的:

<script type="text/javascript">
  var str = "Some text here ...";
  var pattern = /\p{P}/u;
  document.write(str.replace(pattern,''));
</script>

编辑:

看起来Javascript不兼容PECL,所以p{P}将无法工作。


JavaScript正则表达式不支持\p - alex
看起来,就像其他人所说的那样,JavaScript 不支持 pecl,因此这将无法正常工作。您可以替换所有非字母数字字符,但这可能不会给您想要的结果。 - Oussama Jilal
我认为这就是最终的做法。这样我就知道 PHP 和 JavaScript 会产生相同的结果。谢谢! - liz

0
在大多数情况下,正则表达式在Javascript和PHP中是相同的。因此,如果您有一个在PHP中有效的正则表达式,它很可能以相同的方式在JS中工作。主要区别在于,在JS中,您不需要将正则表达式包装在引号中(尽管如果您想要的话可以这样做)。您可以直接在字符串上调用replace方法,如下所示...
myString.replace(/abc/i, "123");

记住,这并不实际改变myString的值...它只是返回替换后的版本。

要获取\pP的实际行为,您需要使用一堆Unicode范围。 - alex
@alex,有趣...我不熟悉那个命令...对于这个特定的例子,我的回答完全可能是无用的。 - Yevgeny Simkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接