Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将正则表达式形成Java字符串_Java_Regex_String - Fatal编程技术网

将正则表达式形成Java字符串

将正则表达式形成Java字符串,java,regex,string,Java,Regex,String,我有一个字符串,其中只有数字和无,一个或多个百分比是允许的 所以我的正则表达式应该是:[\d+%],您可以测试它 对于java,我必须对其进行转换 public static final String regex = "[\\d+\\%]"; 为了测试它,我使用了这个函数 public static final String regex = "[\\d+\\%]"; public boolean validate(String myString){ Pattern pattern

我有一个字符串,其中只有数字和无,一个或多个百分比是允许的

所以我的正则表达式应该是:[\d+%],您可以测试它

对于java,我必须对其进行转换

public static final String regex = "[\\d+\\%]";
为了测试它,我使用了这个函数

public static final String regex = "[\\d+\\%]";

public boolean validate(String myString){

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(myString);

    if (!matcher.matches()) {
        return false;
    }else{
        return true;
    }
}
正则表达式不起作用,如果我使用

public static final String regex = "[\\d+%]";
有什么好的在线工具可以用来转义java的长正则表达式吗

一个更高级的问题: 仅当字符串中至少有一位数字时,才允许使用%字符,不允许使用%字符!并且:只有当数字的位数正好是8时才允许使用不带%的数字,不少于表示:1234567是坏的,但12345678是好的

测试用例:

错误:%,空字符串,23b,-1,7.5,%5a,11234567 好:12345678,23%,1%53%53%7 我有一个字符串,其中只允许数字,不允许有一个或多个百分比,因此我的正则表达式是:[\d+%]

实际上,它与一个字符相匹配,这个字符可能是数字,a+或a%

要匹配您用文字描述的内容,您需要以下内容:

  [\d%]*\d[\d%]*
它与至少包含一个带有可选百分号的数字的字符串相匹配。请注意,%字符不是元字符,因此不需要在正则表达式中转义。它将符合以下所有条件:

  0
  00
  %0
  0%0
  00%
  0%0%0
  0%%0
以此类推,但不仅仅是%或任何包含除数字或%字符以外的字符的字符串

有什么好的在线工具可以用来转义java的长正则表达式吗

我不知道有一个。但逃跑并不是你的正则表达式不起作用的原因

一个更高级的问题:如果字符串中至少有一位数字,则只允许%,不允许%

我想我上面的正则表达式就是这样的。作为记录,以下是它作为Java字符串文本的外观:

"[\\d%]*\\d[\\d%]*"
除非正则表达式中有TAB、NL、CR等字符,否则只需将每个\替换为\\就足够了

我有一个字符串,其中只允许数字,不允许有一个或多个百分比,因此我的正则表达式是:[\d+%]

实际上,它与一个字符相匹配,这个字符可能是数字,a+或a%

要匹配您用文字描述的内容,您需要以下内容:

  [\d%]*\d[\d%]*
它与至少包含一个带有可选百分号的数字的字符串相匹配。请注意,%字符不是元字符,因此不需要在正则表达式中转义。它将符合以下所有条件:

  0
  00
  %0
  0%0
  00%
  0%0%0
  0%%0
以此类推,但不仅仅是%或任何包含除数字或%字符以外的字符的字符串

有什么好的在线工具可以用来转义java的长正则表达式吗

我不知道有一个。但逃跑并不是你的正则表达式不起作用的原因

一个更高级的问题:如果字符串中至少有一位数字,则只允许%,不允许%

我想我上面的正则表达式就是这样的。作为记录,以下是它作为Java字符串文本的外观:

"[\\d%]*\\d[\\d%]*"

除非正则表达式中有TAB、NL、CR等字符,否则只需将每个字符\替换为\。

和的作用是什么?删除这些字符并查看其是否有效。[\d%]+表示:一个数字或百分比字符,一次或多次。如果将+放在方括号中,它将被解释为文字+。方括号外+的含义是:前一件事,一次或多次。你能为你的问题添加一些测试用例吗?@halex testcase:GOOD:12345678 23%1%53%35 BAD:23%b23%uu等等1和1234567都是坏的,但12345678是好的?为什么?和是干什么用的?删除这些字符并查看其是否有效。[\d%]+表示:一个数字或百分比字符,一次或多次。如果将+放在方括号中,它将被解释为文字+。方括号外+的含义是:前一件事,一次或多次。你能为你的问题添加一些测试用例吗?@halex testcase:GOOD:12345678 23%1%53%35 BAD:23%b23%uu等等1和1234567都是坏的,但12345678是好的?为什么?斯蒂芬,干得好。。。我真的需要越来越多地学习正则表达式@约尔格-嗯。。。我对正则表达式的看法是它们被高估和过度使用。知道如何使用它们是好的,但是使用它们作为任何解析问题的默认解决方案是不好的,IMO.ok,我从某人那里编辑后发现测试用例并不完全是我想要的。。。我更新了我的测试用例,所以也许你知道如何解决它?Stephen,做得很好。。。我真的需要越来越多地学习正则表达式@约尔格-嗯。。。我对正则表达式的看法是它们被高估和过度使用。知道如何使用它们是好的,但是使用它们作为任何解析问题的默认解决方案是不好的,IMO.ok,我从某人那里编辑后发现测试用例并不完全是我想要的。。。我更新了我的测试用例,所以也许你知道如何解决它?