在我的应用中,我可以接受这种格式的字符串:
'key':'value'
'key1':'value1'
'key2':'value2'
现在我想写一个正则表达式模式来检查这种格式,所以我写这个模式:
/^'(.*)'(:{1})'(.*)?'($|\n)/gm
https://regex101.com/r/oM1qO9/3
此模式有效但如果我将字符串更改为下面的示例,请再次使用,因为选择第一个引号和最后一个引号,因此字符串与模式匹配。
'key':'value','key1':'value1' 'key2':'value2'
答案 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组:除([^']*)
'
- 文字子串':'
':'
- 第2组:除([^']*)
'
- 字符串末尾的'$
。请参阅regex demo。
请注意,'
匹配0次或更多次。如果您需要匹配至少一个,请改用*
。
要允许可选空格,请在需要的地方添加+
。例如,您可以使用
\s*
请参阅this regex demo。
答案 1 :(得分:0)
使用'([^']+)'\s*:\s*'([^']*)'
:
首先,它匹配任何不包含'在一对'之间的非空字符串,然后匹配任意数量的空格,冒号和任意数量的空格,最后它匹配另一个可能空的字符串,该字符串不包含'的'。
我假设你只想捕获键和值,而不是冒号,所以我删除了那个捕获组。
答案 2 :(得分:0)