我有一个方法来检测一个字符串是否是一个数字:
public static boolean isNumber(String num) { return num.matches("(\\p{N})+"); }
上述方法匹配英语、印地语、阿拉伯语号码成功,但匹配中文号码失败:三十萬零二百五十 etc.有没有可能创建一个正则表达式,它可以匹配任何语言(或主要语言)的数字?编辑:数字不会是小数,它将用于验证电话号码。
tjvv9vkg1#
如果你尝试使用javascript,它将与此正则表达式模式一起工作
const stringNumber = "三十萬零二百五十12"; const regex = /\d+/g; const numbers = stringNumber.match(regex); console.log(numbers);
ax6ht2ek2#
正如一些人已经在评论中指出的那样,这些是用于数字的单词,即“一”,“二”,“三”等。中国在19世纪引入了印度阿拉伯数字,所以\p{N}也应该与中国数字相匹配。如果你还想要文字,你应该包括它们,就像stribizhev建议的那样。
\p{N}
2条答案
按热度按时间tjvv9vkg1#
如果你尝试使用javascript,它将与此正则表达式模式一起工作
ax6ht2ek2#
正如一些人已经在评论中指出的那样,这些是用于数字的单词,即“一”,“二”,“三”等。中国在19世纪引入了印度阿拉伯数字,所以
\p{N}
也应该与中国数字相匹配。如果你还想要文字,你应该包括它们,就像stribizhev建议的那样。