js校验只能出现$、空格和指定字符串,并且字符串只能出现一次
时间: 2024-04-12 13:27:10 浏览: 98
如果你要求字符串只能出现一次,你可以稍微修改一下校验的逻辑。以下是一个示例:
```javascript
function validateString(input, specifiedString) {
// 使用正则表达式匹配规则
var regex = new RegExp(`^(?=.*${specifiedString})[$\\sA-Za-z]+$`);
return regex.test(input) && input.indexOf(specifiedString) === input.lastIndexOf(specifiedString);
}
// 测试示例
console.log(validateString("$ Test", "Test")); // true
console.log(validateString("Hello World", "World")); // false
console.log(validateString("$Test Test", "Test")); // false
console.log(validateString("$$$Test$$$", "Test")); // true
```
在上面的示例中,`validateString` 函数接收两个参数:`input` 是输入字符串,`specifiedString` 是指定的字符串。函数使用了正则表达式 `new RegExp(`^(?=.*${specifiedString})[$\\sA-Za-z]+$`)` 来匹配输入字符串。这个正则表达式的含义是:字符串的开头 `^` 必须是 `$` 或空格 `\s` 或字母 `A-Z` 或字母 `a-z` 中的一个,紧接着可以是任意数量的这些字符 `+`,并且必须包含指定的字符串 `(?=.*${specifiedString})`,最后是字符串的结尾 `$`。同时,函数还使用了 `input.indexOf(specifiedString) === input.lastIndexOf(specifiedString)` 来确保指定的字符串只出现一次。
如果输入字符串符合这个规则,则返回 `true`,否则返回 `false`。
你可以根据需要修改指定的字符串或者调整校验的规则。
阅读全文