简体   繁体   English

适用于Unicode或特殊字符的Java Regex

[英]Java Regex for Unicode or special character

I have below statement in Javascript (NodeJS) - 我在Javascript(NodeJS)中有以下声明 -

const name = (name) =>
 name && !XRegExp('^[\\p{L}\'\\d][ \\p{L}\'\\d-]*[\\p{L}\'-\'\\d]$').test(name)
? 'Invalid' : undefined

This regex is for name can accept . 这个正则表达式是名字可以接受. , - and - (space) and should start with character. (空间),应该从性格开始。

How can I achieve same validation regex in java. 如何在java中实现相同的验证正则表达式。 I tried below - 我试过下面 -

@Pattern(regexp = "^(?U)[\\p{L}\\'\\d][ \\p{L}\\'\\d-]*[\\p{L}\\'-\\'\\d]$" , 
message="Invalid name")
String name;

I'm guessing that maybe this expression might work, based on the one you have provided: 我猜这个表达式可能会起作用,基于你提供的那个:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "^[\\p{L}\\d'][ \\p{L}\\d'-]*[\\p{L}\\d'-]$";
final String string = "éééééé";

final Pattern pattern = Pattern.compile(regex, Pattern.UNICODE_CHARACTER_CLASS);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

DEMO DEMO

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM