Ce type de chaînevar d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
Je souhaite obtenir le tableau de chaînes entre [et]
Comment utiliser une expression régulière ?
Ne comprend pas deux parenthèses
Actuellement, je ne peux le faire qu'avec des parenthèses
var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
var patt = /\【[^\】]+\】/g;
d.match(patt)
Très simple, utilisez assertion de largeur nulle :
Seule assertion d'anticipation positive de largeur nulle est utilisée ci-dessus. En fait, si elle ne se limite pas à JavaScript, elle peut également s'écrire sous la forme
.Les assertions de largeur nulle sont divisées en deux catégories et quatre types :
Affirmation de largeur nulle en avant
Assertion d'anticipation positive de largeur nulle
(?=exp)
(?=exp)
表示自身位置之后可以匹配到exp的表达式,而不匹配exp。
比如
d+(?=999)
表示以999结尾的数字串(但是匹配结果不包含999)零宽度正回顾后发断言
(?<=exp)
(JavaScript不支持)表示自身位置之前可以匹配到exp的表达式,而不匹配exp。
比如
(?<=999)d+
表示以999开头的数字串(但是匹配结果不包含999)负向零宽断言
零宽度负预测先行断言
(?!exp)
表示自身位置之后不能是exp的表达式。
比如
d+(?!999)
表示匹配不是以999结尾的数字串零宽度负回顾后发断言
(?<!exp)
(JavaScript不支持)表示自身位置之前不能是exp的表达式。
🎜Assertion positive de largeur nulle比如
(?<!999)d+
Indique que l'expression après sa propre position peut correspondre à exp, mais ne correspond pas à exp.Par exemple,
d+(?=999)
représente une chaîne numérique se terminant par 999 (mais le résultat correspondant n'inclut pas 999)(?<=exp)
(non pris en charge par JavaScript) 🎜Indique que l'expression qui peut correspondre à exp avant sa propre position ne correspond pas à exp.Par exemple,
(?<=999)d+
représente une chaîne numérique commençant par 999 (mais le résultat correspondant n'inclut pas 999)🎜 🎜Assertion négative de largeur nulle🎜 🎜Assertion d'anticipation négative de largeur nulle(?!exp)
🎜L'expression qui indique sa propre position ne peut pas être suivie d'exp.Par exemple,
d+(?!999)
signifie faire correspondre une chaîne de nombres qui ne se termine pas par 999🎜 🎜Assertion d'analyse négative de largeur nulle(?<!exp)
(non pris en charge par JavaScript) 🎜L'expression qui indique sa propre position ne peut pas être précédée de exp.Par exemple,
(?<!999)d+
signifie faire correspondre une chaîne de nombres qui ne commence pas par 999🎜Référez-vous à l'implémentation de @hack_qtxz en utilisant replace.
Voici la réponse originale :
Et la réponse de @Shuke est un peu répétitive, donc je l'écris d'une manière différente.
Voici la réponse originale :
rrreeeCitez @cipchk pour compléter le code pour vous.