如何使用 Java 和 Java 脚本将字符串清理为仅包含数字 (0-9) 和字母 X(大写)

How can I cleanse a String to contain only digits (0-9) and the letter X (uppercase) only, using Java and Javascript

我正在接受用户输入的 ISBN - 可能包含空格和连字符等 - 并尝试将其清理为仅数字。

在Java和Java脚本中,我成功地使用了以下正则表达式

Java(isbn是java.lang.String)

isbn = isbn.replaceAll("[^\d]", "");

并且,Java脚本

isbn = isbn.replace(/[^\d]/g, "");

但是,某些 ISBN 可以将 X 作为校验和字符。例如,Sara Reinke 的 'The book of days' 是 '155404295X'

如何更改正则表达式以允许 X 和数字?

更新[^\dX] 在 Java 脚本中有效,但 [^\dX] 在 Java 中无效。

更新 2:PEBKAC!我在两个地方进行了消毒——我更新了一个,但没有更新另一个。 [^\dX] 也适用于 Java。

你可以试试 [^0-9X] 吗?我认为它适用于 Java 和 JavaScript。 P.S。但是 \d 也应该在 Java 中工作...

如果您想遵循您的解决方案,可以使用 ?:(values) 排除 对于您的示例,它将是:[^\d?:(X)] 在线测试 java 正则表达式。