用java代码,编写正则校验,不能出现“?”、“!”、“$”、“%”、“^”、“*” 字符。(“?”和“!”包含全角和半角两种格式,其他字符为半角字符。)
时间: 2023-10-31 12:05:34 浏览: 163
可以使用Java中的正则表达式来实现该校验,代码如下:
```java
public class RegexDemo {
public static void main(String[] args) {
String input = "Hello, world!"; // 待校验的字符串
String pattern = "[^!!\\?$%^*]"; // 匹配除了!!?$%^*以外的字符
boolean isValid = input.matches(pattern);
System.out.println(isValid);
}
}
```
解释一下代码:
- `String pattern = "[^!!\\?$%^*]";`:定义一个正则表达式,`^`表示取反,`!!\\?$%^*`表示要排除的字符,由于`?`和`!`包含两种格式,所以都要写出来。
- `boolean isValid = input.matches(pattern);`:使用`matches()`方法进行校验,返回一个布尔值表示是否匹配。
运行代码后,输出结果为`false`,表示字符串中包含了要排除的字符。如果将字符串中的`!`或`$`等字符替换为其他字符,再次运行代码,则输出结果为`true`,表示字符串符合校验规则。
相关问题
java车牌号正则校验包括新能源
在Java中进行车牌号的正则校验,需要根据车牌号的格式规则来编写正则表达式。对于中国的车牌号,包括传统的燃油车车牌和新能源车牌,有不同的格式。
传统燃油车车牌号一般格式为:一个汉字(省份简称)+一个字母(发证机关代码)+五位数字或字母的组合。新能源车牌则通常在传统车牌的基础上有特定的标识,比如“D”或“F”分别代表纯电动和非纯电动新能源汽车。
以下是一个简单的示例,用于校验包括新能源车牌在内的车牌号:
```java
public class LicensePlateValidator {
public static void main(String[] args) {
String plateNumber1 = "京A12345";
String plateNumber2 = "粤B新能源D12345";
System.out.println(isValidLicensePlate(plateNumber1)); // 输出:true 或 false
System.out.println(isValidLicensePlate(plateNumber2)); // 输出:true 或 false
}
public static boolean isValidLicensePlate(String plate) {
// 正则表达式匹配传统车牌和新能源车牌
String regex = "[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{5}|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[DF]{1}[A-Z0-9]{5}";
return plate.matches(regex);
}
}
```
上述代码中的正则表达式解释:
- `[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}`:匹配一个汉字省份简称,其中`使领`代表使领馆。
- `[A-Z]{1}`:匹配一个字母发证机关代码。
- `[A-Z0-9]{5}`:匹配五位数字或字母。
- `|`:逻辑“或”操作符,表示匹配左边或右边的表达式。
- `[DF]{1}`:匹配新能源车牌特有的"D"或"F"标识。
- 整个正则表达式被分为两部分,其中`|`左右两边分别对应传统车牌和新能源车牌的模式。
java编写使用正则表达式校验字符串是否符合以下规则 ,必须是5-15位数字;0不能开头;必须都是数字
可以使用以下正则表达式来校验字符串是否符合规则:
^(?!0)\d{5,15}$
解释:
^ 表示字符串的开头
(?!0) 表示不以0开头
\d 表示数字
{5,15} 表示数字的数量在5到15个之间
$ 表示字符串的结尾
因此,以上正则表达式可以校验字符串是否符合以下规则:
- 必须是5-15位数字;
- 0不能开头;
- 必须都是数字。