【问题标题】:How to Check that String is alphanumeric in Java如何在 Java 中检查字符串是否为字母数字
【发布时间】:2020-01-12 00:12:48
【问题描述】:

我正在尝试检查输入的字符串是否为字母数字。我尝试了一些正则表达式,即,

 ^[a-zA-Z0-9]+$
 ^[A-Za-z0-9]*$
 ^[\pL\pN]+$

但如果字符串仅包含数字或仅包含字母或字母数字,所有这些都将起作用。但我需要检查字符串应该是 AlphaNumeric 并且仅以数字开头。请帮帮我。

【问题讨论】:

  • 您可以执行 try-catch 并将您的值解析为 int 或 double。如果它失败并抛出异常,你就知道它不是数值。
  • 您似乎想添加以数字开头的要求。所以我会在你的正则表达式的开头添加一个数字。您为满足此要求做了什么尝试,遇到了什么问题?
  • 您的问题不清楚。您应该发布一些输入和预期结果的示例,并解释为什么会出现这样的结果(为什么它们是正确/不正确的)?
  • 注意:AlphaNumeric 通常表示包含字母或数字的任意组合,只能是字母或数字。
  • IMO 不需要对这样的正则表达式问题进行支持,因为 (a) 确切的示例很容易搜索,并且 (b) OP 显然没有努力寻找答案。虽然投反对票可能太多,但考虑到措辞模棱两可和缺乏后续行动,几乎没有什么赎回价值。

标签: java regex


【解决方案1】:
string.matches("[0-9]+[a-zA-Z]+[a-zA-Z0-9]*$"); 
// ensures you have atleast 1 number, 1 alphabet and starts with a number/digit

【讨论】:

  • 这个工作正常。我需要将字符串与 , 作为分隔符,例如 '2012IND00013,2012IND0014'。然后如何更改此 reg exp。请建议。
  • @Ganesh 用逗号分割并测试每一个,尤其是在有任意数量的 CSV 时。并花一些时间学习正则表达式,尤其是当它们如此简单时。
  • @Ganesh - 我会听取戴夫的建议 :)
  • @DaveNewton 需要检查而不拆分字符串
  • @Ganesh ... 所以使用相同的表达式两次,中间用逗号,注意贪婪。但是要求检查而不拆分似乎并不合理。此外,不更新问题以使其更清楚是不负责任的——您被要求这样做,而您看到了您的问题造成的混乱。
【解决方案2】:

因此,您希望在第一个数字之后至少有一个字母。对吧?

然后使用

^[0-9]+[a-zA-Z][a-zA-Z0-9]*$

【讨论】:

  • 不确定它是否规定字母必须出现在数字之后。
  • @PeterLawrey:它还会出现在哪里?
  • OP 状态它必须出现在哪里?
  • @PeterLawrey:它们在代码示例之后的第一句话中
  • @TimPietzcker 那句话是在谈论 OP 不想要的正则表达式。然后他说But I need to check
猜你喜欢
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2011-12-24
  • 2017-10-18
  • 2019-03-31
  • 2013-04-01
相关资源
最近更新 更多