Javascript mongodb/jsonpath/jmespath表达式,用于筛选具有包含特殊字符或重音字符的属性的对象

Javascript mongodb/jsonpath/jmespath表达式,用于筛选具有包含特殊字符或重音字符的属性的对象,javascript,json,mongodb,jsonpath,jmespath,Javascript,Json,Mongodb,Jsonpath,Jmespath,我需要过滤这个json中包含特殊字符的对象。(我可以编写javascript,也可以在mongo中导入和查询数据。) 预期产量 { "Detail": [ { "name": "somename2", "text": "Sometext!" }, { "name

我需要过滤这个json中包含特殊字符的对象。(我可以编写javascript,也可以在mongo中导入和查询数据。)

预期产量

{
    "Detail": [
        {
            "name": "somename2",
            "text": "Sometext!"
        },
        {
            "name": "somename3",
            "text": "método"
        }
    ]
}
有没有办法在jsonpath或jmspath中使用正则表达式来实现这一点

我尝试了各种方法来接近我所需要的东西,比如这些,但我在这一点上受阻了

Detail[].text.contains(`é`) in jmespath

$.[?(@.text=~ ^[a-zA-Z0-9]*$].text in jsonpath

db.test.find({'Detail.text': /[a-zA-Z0-9]*$]/}) in mongodb where 'test' is the collection


我想你应该试试这个工具

我在网上试过了

在这张图片中,您可以看到输出

这是我使用的正则表达式

.Detail[?(@.text =~ /(?:^\W+\w*$)|(?:^\w+\W+$)|(?:^\w+\W+\w+$)/)]
我把这个问题分成三组

  • 该字符串至少以一个特殊字符或非单词字符^\W+开头,后跟零个或多个单词字符,即$xito

  • 字符串以至少一个单词字符^\w+开头,后跟零个或多个非单词字符,即culminó,knowledge

  • 字符串以至少一个单词字符^\w+开头,然后是一个或多个非单词字符\w+,然后是至少一个单词字符,即beneplácito,现在|知道$$$发生了什么

  • 前面的每个案例都使用非捕获组(?:)进行分组,使用的逻辑操作是或(|),因为您的字符串可以匹配三个组中的任何一个

    我还使用这个工具来准备正则表达式


    顺便说一句,这是基于这个答案的。

    这有帮助吗:谢谢@Joe,这有助于构建字符类,但我仍然无法理解在中使用正则表达式只过滤具有特殊字符属性的对象的语法。非常感谢。我无法理解语法,但这很有帮助。
    .Detail[?(@.text =~ /(?:^\W+\w*$)|(?:^\w+\W+$)|(?:^\w+\W+\w+$)/)]