需要验证的字符串采用以下格式,严格来说它不是JSON,不能使用PHP的JSON编码过程进行验证。请注意,键中的%%是必需的。
// As a single pair
{"%%key%%":"value"}
// Or comma delimited pairs
{"%%key%%":"value","%%key 2%%":"value 2", ...etc...}
当前正则表达式成功验证了上述内容:
\{"%%[a-zA-Z0-9]+%%":"[a-zA-Z0-9 ]+"(?:,"%%[a-zA-Z0-9]+%%":"[a-zA-Z0-9 ]+")*}
有效示例:https://regex101.com/r/4y1uEu/1
无效示例(第二个值周围没有引号):https://regex101.com/r/4y1uEu/2
值需要支持其他字符,最好是任何字符,所以我将REGEX更改为
\{"%%[a-zA-Z0-9]+%%":".+"(?:,"%%[a-zA-Z0-9]+%%":".+")*}
与此字符串不匹配所需模式的匹配:
{"%%hello%%":"world","%%foo%%":bar"}
^ missing quote
假阳性示例:https://regex101.com/r/4y1uEu/3
我相信原因是新的“任何角色”被用于整个部分:{ " % hello % % ":" world "," %foo%%":bar"}
我怎样才能以某种方式使“任何字符”匹配结束?这种方法会因为引号本身是“任意字符”而注定失败吗?
预期结果的一些例子:
< code > { " % hello % % ":" world "," %foo%%":"bar"}有效
{"%%hello%%":"world lorem","%%foo%%":"bar ipsum"}
有效
{“%%hello%%”:“world lo-rem”,“%%foo%%”:“bar ips'um”}
有效
{“%%hello%%”:“world lo-rem”,“%%foo%%”:“lorem ”ipsum“ dolor”}
有效
var pattern = /^{("%%[a-zA-Z0-9]+%%":"([A-z0-9\s\\"'-])*"\s*(,|})\s*)*$/
str = "{\"%%hello%%\":\"world lo-rem\",\"%%foo%%\":\"lorem \"ipsum\" dolor\"}"
console.log(str+ ' '+pattern.test(str))
str = "{\"%%hello%%\":\"world lo-rem\",\"%%foo%%\":\"bar ips'um\"}"
console.log(str+ ' '+pattern.test(str))
str = "{\"%%hello%%\":\"world\",\"%%foo%%\":bar\"}"
console.log(str+ ' '+pattern.test(str))
str = "{\"%%hello%%\":\"world\",\"%%foo%%\":bar}"
console.log(str+ ' '+pattern.test(str))
我已经做了一个有效的解决方案,但它很无聊,也很不优雅: 如何使用Regex实现这一点?
问题内容: 我想,以取代所有和使用 但我不喜欢我的代码… 有没有比以下方法更有效的方法: ? toLowerCase()就在那里,因为我也希望它也小写… 问题答案: 编辑: 使用正则表达式,并且在字符类内部使用仅识别一个而不是任何字符。
问题内容: 我以为可能是[。\ n] +,但这似乎不起作用? 问题答案: 点不能在字符类中使用。 请参阅选项Pattern.DOTALL。 启用dotall模式。在dotall模式下,表达式匹配任何字符,包括行终止符。默认情况下,此表达式与行终止符不匹配。也可以通过嵌入式标志表达式启用Dotall模式。(s是“单行”模式的助记符,在Perl中被称为。) 如果仅在正则表达式的一部分上需要它,则使用e
被删除,因此也是另一个匹配字符串的一部分,不确定这是由于错误的regEx还是反字符类的错误应用。
我有这些线。我希望有一个正则表达式来匹配它们,并在将它们传递给preg_match函数时返回true。 如何在正则表达式中创建与上述模式匹配的模式?像这样: 星号(*)表示任何单词。这是我目前掌握的正则表达式模式: 格式在单词上不匹配。如何在单词上匹配字符串?
问题内容: 我有一个使用UTF-8字符串输出文本表的程序,并且我需要测量字符串使用的等宽字符单元数,以便正确对齐它。如果可能的话,我想使用标准功能。 问题答案: 来自Unix / Linux的UTF-8和Unicode常见问题解答 : 可以使用C以可移植的方式在C中计算字符数。只要已选择适当的语言环境,此方法就可以与其他支持的编码一样适用于UTF-8。计算UTF-8字符串中字符数的一种硬连接技术是