js检测字符串的正则表达式,仅限2-20位中文,且兼容符号·

我想请问一下,js检测字符串的正则表达式,仅限2-20位中文,且兼容符号·
最新回答
扯蛋的青春

2022-07-31 03:00:23

var myregexp = /[\u4e00-\u9fa5·]{2,20}/g;
微浅笑°

2022-09-01 11:11:20

[^a-zA-Z]{2-20}
予情

2023-09-02 06:45:24

可以使用以下正则表达式来检测符合条件的字符串:

```javascript
/^[\u4e00-\u9fa5]+(?:·[\u4e00-\u9fa5]+)*$/u
```

该正则表达式会匹配2-20位中文且兼容符号·,其中:

- `^`:表示匹配字符串的开始。
- `[\u4e00-\u9fa5]+`:表示匹配一到多个中文字符。
- `(?:·[\u4e00-\u9fa5]+)*`:表示匹配0到多个符号·和一到多个中文字符的组合,该部分是一个非捕获组,使用`(?:)`表示。
- `$`:表示匹配字符串的结束。
- `/u`:表示启用Unicode模式,以支持Unicode字符。

示例代码:

```javascript
function isValidName(name) {
const reg = /^[\u4e00-\u9fa5]+(?:·[\u4e00-\u9fa5]+)*$/u;
return reg.test(name);
}

// 测试示例
console.log(isValidName('小明')); // true
console.log(isValidName('欧阳·超')); // true
console.log(isValidName('张三·李四·王二')); // true
console.log(isValidName('aabb')); // false,不是中文字符
console.log(isValidName('小明1')); // false,包含数字
console.log(isValidName('欧阳·')); // false,以符号·结尾
console.log(isValidName('欧阳·超1')); // false,包含数字
console.log(isValidName('小')); // false,少于2个字符
console.log(isValidName('欧阳·超超超超超超超超超超超超')); // false,超过20个字符
```

注意:该正则表达式只是一个简单的验证规则,不能保证100%正确,根据实际需求可以自行调整