regex PCRE(PHP)正则表达式到ECMAScript(Javascript)

wbgh16ku  于 2022-11-26  发布在  PHP
关注(0)|答案(1)|浏览(115)

这个PCRE正则表达式是用来验证JSON字符串的。现在我想把这个PCRE转换成javascript,以便在React验证中使用。
PCRE正则表达式-

/(?(DEFINE)
    (?<json>(?>\s*(?&object)\s*|\s*(?&array)\s*))
    (?<object>(?>\{\s*(?>(?&pair)(?>\s*,\s*(?&pair))*)?\s*\}))
    (?<pair>(?>(?&STRING)\s*:\s*(?&value)))
    (?<array>(?>\[\s*(?>(?&value)(?>\s*,\s*(?&value))*)?\s*\]))
    (?<value>(?>true|false|null|(?&STRING)|(?&NUMBER)|(?&object)|(?&array)))
    (?<STRING>(?>"(?>\\(?>["\\\/bfnrt]|u[a-fA-F0-9]{4})|[^"\\\0-\x1F\x7F]+)*"))
(?<NUMBER>(?>-?(?>0|[1-9][0-9]*)(?>\.[0-9]+)?(?>[eE][+-]?[0-9]+)?))
)
\A(?&json)\z/

我是新的regex,所以不能这样做。

velaa5lx

velaa5lx1#

你不需要正则表达式来验证js中的json,只要用途:

//let a = '{"a": "adhajshd"}'
let a = '{a: adhajshd}'

try
{
        let j = JSON.parse(a)
        console.log(j)
}
catch(e)
{
                console.error(e)
}

第一输出:

{ a: 'adhajshd' }

第二输出:

SyntaxError: Unexpected token a in JSON at position 1
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (/home/iban/scripts/node/a.js:6:15)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)

相关问题