java 用于匹配多语言数字的正则表达式不检测中文数字

7nbnzgx9  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(98)

我有一个方法来检测一个字符串是否是一个数字:

public static boolean isNumber(String num)
{
    return num.matches("(\\p{N})+");
}

上述方法匹配英语、印地语、阿拉伯语号码成功,但匹配中文号码失败:
三十萬零二百五十 etc.
有没有可能创建一个正则表达式,它可以匹配任何语言(或主要语言)的数字?
编辑:数字不会是小数,它将用于验证电话号码。

tjvv9vkg

tjvv9vkg1#

如果你尝试使用javascript,它将与此正则表达式模式一起工作

const stringNumber = "三十萬零二百五十12";
const regex = /\d+/g; 

const numbers = stringNumber.match(regex);

console.log(numbers);
ax6ht2ek

ax6ht2ek2#

正如一些人已经在评论中指出的那样,这些是用于数字的单词,即“一”,“二”,“三”等。中国在19世纪引入了印度阿拉伯数字,所以\p{N}也应该与中国数字相匹配。如果你还想要文字,你应该包括它们,就像stribizhev建议的那样。

相关问题