如何检查正则表达式中的字符串引号

时间:2017-08-21 09:09:19

标签: regex

在我的应用中,我可以接受这种格式的字符串:

'key':'value'
'key1':'value1'
'key2':'value2'

现在我想写一个正则表达式模式来检查这种格式,所以我写这个模式:

/^'(.*)'(:{1})'(.*)?'($|\n)/gm

https://regex101.com/r/oM1qO9/3

此模式有效但如果我将字符串更改为下面的示例,请再次使用,因为选择第一个引号和最后一个引号,因此字符串与模式匹配。

'key':'value','key1':'value1' 'key2':'value2'

https://regex101.com/r/oM1qO9/4

3 个答案:

答案 0 :(得分:1)

<ul style="list-style: none; width: 200px; text-align:right" > <li class="item" ><p>hello world</p></li> <li class="item"><p>hello world</p></li> <li class="item"><p>hello world</p></li> </ul>模式尽可能多地匹配除换行符之外的任何0+字符:将当前位置形成到行尾,消耗它在路径上找到的所有.*字符行结束。即使你使用'模式,一个懒惰的量化点,它仍然会通过.*?找到一个有效的匹配(一行至少有4个'个字符。)

所以,你需要在这里使用否定的字符类,'匹配除[^']之外的任何字符。

'

或 - 禁止空键名称:

/^'([^']*)':'([^']*)'$/

或 - 禁止空名称和值:

/^'([^']+)':'([^']*)'$/

<强>详情

  • /^'([^']+)':'([^']+)'$/ - 字符串开头
  • ^ - 撇号
  • ' - 第1组:除([^']*)
  • 以外的任何0 +字符
  • ' - 文字子串':'
  • ':' - 第2组:除([^']*)
  • 以外的任何0 +字符
  • ' - 字符串末尾的'$

请参阅regex demo

请注意,'匹配0次或更多次。如果您需要匹配至少一个,请改用*

要允许可选空格,请在需要的地方添加+。例如,您可以使用

\s*

请参阅this regex demo

答案 1 :(得分:0)

使用'([^']+)'\s*:\s*'([^']*)'
首先,它匹配任何不包含'在一对'之间的非空字符串,然后匹配任意数量的空格,冒号和任意数量的空格,最后它匹配另一个可能空的字符串,该字符串不包含'的'。

我假设你只想捕获键和值,而不是冒号,所以我删除了那个捕获组。

https://regex101.com/r/nxVAkB/3

答案 2 :(得分:0)

进行全球匹配
'(?<key>[^']+)':'(?<value>[^']+)'

匹配您的所有示例并为您提供 - 命名 - 结果。

检查regex101.com