小编Mar*_*ano的帖子

如何使用正则表达式来验证中文输入?

问题是我需要在客户端验证中将此类中文输入视为无效:

任何与任何中文字符和空格混合的英文字符总长度> = 10时,输入无效.

让我们说:"你的是你的你的你"或"你的你的你的你"(长度为10)无效.但是"你的是你的一个人"(长度为9)是可以的.

我使用Javascript进行客户端验证,使用Java进行服务器端.所以我认为在两者上应用正则表达式应该是完美的.

任何人都可以提供一些提示如何在正则表达式中编写规则?

javascript regex unicode validation

4
推荐指数
1
解决办法
2326
查看次数

Java 正则表达式不会返回捕获组

在 Java 中,我想使用正则表达式解析格式为“MM/DD/YYYY”的日期字符串。我尝试用括号创建捕获组,但它似乎不起作用。它只返回整个匹配的字符串——而不是“MM”、“DD”和“YYYY”组件。

public static void main(String[] args) {
    Pattern p1=Pattern.compile("(\\d{2})/(\\d{2})/(\\d{4})");
    Matcher m1=p1.matcher("04/30/1999");

    // Throws IllegalStateException: "No match found":
    //System.out.println("Group 0: "+m1.group(0));

    // Runs only once and prints "Found: 04/30/1999".
    while (m1.find()){
        System.out.println("Found: "+m1.group());
    }
    // Wanted 3 lines: "Found: 04", "Found: 30", "Found: 1999"
}
Run Code Online (Sandbox Code Playgroud)

group带有参数 ( m1.group(x))的 " " 函数似乎根本不起作用,因为无论我给它什么索引,它都会返回异常。循环find()'s 仅返回单个完整匹配“04/30/1999”。正则表达式中的括号好像完全没用!

这在 Perl 中很容易做到:

my $date = "04/30/1999";
my ($month,$day,$year) = $date =~ m/(\d{2})\/(\d{2})\/(\d{4})/;
print "Month: ",$month,", day: ",$day,", year: ",$year;
# Prints:
# …
Run Code Online (Sandbox Code Playgroud)

java regex

2
推荐指数
1
解决办法
759
查看次数

正则表达式匹配单词,同时保留行尾

我有一个字符串如下:

str = 'chem biochem chem chemi hem achem abcchemde chem\n asd chem\n'
Run Code Online (Sandbox Code Playgroud)

我想用"化学"代替"chem"这个词,同时保留行尾字符('\n').我也希望正则表达式不匹配'biochem','chemi','hem','achem'和'abcchemde'等词.我怎样才能做到这一点?

这是我正在使用但它不起作用:

import re    
re.sub(r'[ ^c|c]hem[$ ]', r' chemistry ', str)
Run Code Online (Sandbox Code Playgroud)

谢谢

regex string python-2.7

0
推荐指数
1
解决办法
56
查看次数

标签 统计

regex ×3

java ×1

javascript ×1

python-2.7 ×1

string ×1

unicode ×1

validation ×1