返回

正则表达式教程:判断考卷分数

正则表达式

## 一、正则解释

正则表达式:**^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$** 

* **^** :字符串开始。
* **150$** :字符串以 150 结尾。
* **(?:\d|[1-9]\d|1[0-4]\d)** :匹配一个数字,或一个大于 0 且小于 150 的整数,或一个大于等于 10 且小于等于 140 的整数。
* **(?:\.5)?** :匹配一个小数点后跟 5,该部分可有可无。
* **$** :字符串结束。

## 二、使用场景

该正则表达式可用于验证考卷分数是否符合以下条件:

* 大于等于 0
* 小于等于 150
* 支持小数位出现 5

## 三、代码示例

### JavaScript

```javascript
const regex = /^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$/;

console.log(regex.test("150")); // true
console.log(regex.test("100.5")); // true
console.log(regex.test("200")); // false
console.log(regex.test("-5")); // false
console.log(regex.test("145.7")); // false
```

### Java

```java
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String regex = "^150$|^(?:\\d|[1-9]\\d|1[0-4]\\d)(?:\\.5)?$";
        Pattern pattern = Pattern.compile(regex);

        System.out.println(pattern.matcher("150").matches()); // true
        System.out.println(pattern.matcher("100.5").matches()); // true
        System.out.println(pattern.matcher("200").matches()); // false
        System.out.println(pattern.matcher("-5").matches()); // false
        System.out.println(pattern.matcher("145.7").matches()); // false
    }
}
```

### PHP

```php
<?php
$regex = '/^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$/';

echo preg_match($regex, "150") . "\n"; // 1
echo preg_match($regex, "100.5") . "\n"; // 1
echo preg_match($regex, "200") . "\n"; // 0
echo preg_match($regex, "-5") . "\n"; // 0
echo preg_match($regex, "145.7") . "\n"; // 0
?>
```

### Python

```python
import re

regex = r"^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:\.5)?$"

print(bool(re.match(regex, "150")))  # True
print(bool(re.match(regex, "100.5")))  # True
print(bool(re.match(regex, "200")))  # False
print(bool(re.match(regex, "-5")))  # False
print(bool(re.match(regex, "145.7")))  # False
```