diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java index 834332cab4c8..e4c8f5c04fc8 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java @@ -32,6 +32,16 @@ public interface RegExpLanguageHost { boolean supportsNamedGroupRefSyntax(RegExpNamedGroupRef ref); boolean supportsExtendedHexCharacter(RegExpChar regExpChar); + default boolean isValidGroupName(String name, @NotNull PsiElement context) { + for (int i = 0, length = name.length(); i < length; i++) { + int c = name.codePointAt(i); + if (!(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '_')) { + return false; + } + } + return true; + } + default boolean supportsSimpleClass(RegExpSimpleClass simpleClass) { return true; } diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java index b76bf14cf5bd..e16fbd5c1143 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java @@ -22,6 +22,7 @@ import com.intellij.psi.PsiComment; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; import org.intellij.lang.regexp.psi.*; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; @@ -48,6 +49,7 @@ public final class RegExpLanguageHosts extends ClassExtension null") @Nullable private static RegExpLanguageHost findRegExpHost(@Nullable final PsiElement element) { if (ApplicationManager.getApplication().isUnitTestMode() && myHost != null) { @@ -115,6 +117,11 @@ public final class RegExpLanguageHosts extends ClassExtensionadsf>]]> OK + + (?<important_value1>\d\d) + ERR + + + (?<importantValue1>\d\d) + OK + diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java b/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java index 17e980719fb3..d97a2805883b 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java @@ -164,6 +164,17 @@ public class JavaRegExpHost implements RegExpLanguageHost { return ref.isNamedGroupRef() && hasAtLeastJdkVersion(ref, JavaSdkVersion.JDK_1_7); } + @Override + public boolean isValidGroupName(String name, @NotNull PsiElement context) { + for (int i = 0, length = name.length(); i < length; i++) { + int c = name.codePointAt(i); + if (!(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9')) { + return false; + } + } + return true; + } + @Override public boolean supportsExtendedHexCharacter(RegExpChar regExpChar) { return hasAtLeastJdkVersion(regExpChar, JavaSdkVersion.JDK_1_7);