我在SO和web上都发现了很多关于这个主题的变化,但大多数(如果不是全部的话)要求至少一个字母和一个数字。我至少需要一封信。我已经试过了,但还没有成功,我需要的是字符串只包含字母、字母和数字(任意顺序),允许使用破折号和空格,但不能在字符串的开头或结尾。下面是它现在的样子:
protected static final String PATTERN = "[\u00C0-\u017Fa-zA-Z0-9']+([- ][\u00C0-\u017Fa-zA-Z0-9']+)*";
public static void main(String[] args) {
String name;
//name = "Street"; // allowed
//name = "Some-Street"; // allowed
//name = "Street "; // not allowed
//name = " Street"; // not allowed
//name = "Street-"; // not allowed
//name = "-Street"; // not allowed
//name = "Street"; // allowed
//name = "1 st street"; // allowed
//name = "street 5"; // allowed
name = "111"; // NOT allowed
if (!Pattern.matches(PATTERN, name)) {
System.out.println("ERROR!");
} else System.out.println("OK!");
}
}
如何添加检查是否至少有一个字符?
不管它是在开头还是结尾,或者它和数字之间是否有空格或破折号。只要至少有一个字符。
以下正则表达式做的工作:
(?=.*[[:alpha:]])[[:alnum:]]{1}[[:alnum:] -]*[[:alnum:]]{1}
>
[[:alnum:][1}部分保证字符串以字母数字字符[A-Za-z0-9]开头
[[: alnum:] -]* 字母数字字符、空格和破折号字符可能存在于此处。
[[:alnum:]{1}部分保证字符串以字母数字字符[A-Za-z0-9]结尾
现场观看https://regex101.com/r/V0lesF/1
如果我没理解错的话,根据你的陈述,你有以下条件:
基于这些条件,以下正则表达式将起作用:
^(?![ -]|\d+$)[[:alnum:] -]+(?<![ -])$
要查看正在使用的正则表达式,请单击此链接
此正则表达式的工作原理如下:
这将为您提供以下匹配项
Street
Some-Street
Street
1 st street
street 5
正则表达式将无法匹配以下字符串(根据您的示例)
Street
Street
Street-
-Street
111
在某些语言(如java)中,负面的后视有时会导致问题。
下面是我以前的正则表达式的一个改编版本,它使用负前瞻而不是负前瞻,以确保字符串不会以连字符或空格结尾。
^(?![ -]|\d+$)(?:(?![ -]$)[\pL\pN -])+$
你可以在这里看到这个正则表达式的使用
您可以使用此正则表达式解决您的问题:
^(?=.*\pL)[\pL\pN]+(?:[ -]+[\pL\pN]+)*$
RegEx演示
Java使用:
final String regex = "^(?=.*\\pL)[\\pL\\pN]+(?:[ -]+[\\pL\\pN]+)*$";
RegEx分解:
问题内容: 深入研究堆栈溢出后,我发现了一些代码来检查字符串是否为字母数字且长于8个字符。效果很好。现在,如果包含至少2个数字,如何使它返回true?我想我必须在某处添加。 问题答案: 您不需要单独的if条件。单个正则表达式将为您完成所有工作。
我的条件... 字母数字值 只允许使用一个空格或连字符 必须包含至少一个数字 不能以空格或连字符开头或结尾 最少2个字符,最多16个字符,不包括空格/连字符 到现在为止,我准备了正则表达式 它只遗漏了第三点。 测试字符串有效 无效
我在Groovy中使用正则表达式。 我试图用以下规则来公式化正则表达式。 必须正好是17个字符 必须只包含字母和数字 必须包含至少1个alpha和1个数字字符 不能包含字母'I'、'O'或'Q'(大写或小写) 用下面的表达,我想我就快到了。下面的正则表达式似乎满足了要求1、2和3。 我曾尝试添加要求4,但没有成功。谁能帮我一下吗? 谢谢
要匹配至少包含一个字母或数字的字符串,JavaScript正则表达式是什么?这至少需要一个字母数字字符(至少一个字母或至少一个数字)。
问题内容: 我正在寻找Java代码来检查字符串是否为有效的XML。 问题答案: 用正则表达式验证XML是不可能的。XML不是常规语言。 使用XML解析器尝试将字符串解析为XML,或者对照模式(例如DTD或XSD文件)验证XML文档。
问题内容: 我有一个字符串。如何检查字符串是正则表达式还是包含正则表达式还是正常字符串? 问题答案: 您唯一可以做的可靠检查是,如果语法正确的是正则表达式: 但是请注意,即使对于像和这样的字符串,也会导致这种情况,因为从技术上讲,它们是有效的正则表达式。 唯一会返回的情况是不是有效正则表达式的字符串,例如或或。