Javascript Firebase云消息传递的正则表达式
我正在尝试检查用户输入的字符串,将其用作使用Firebase云消息发送通知的主题名称 据我所知,主题名称中只允许使用以下字符:Javascript Firebase云消息传递的正则表达式,javascript,regex,firebase-cloud-messaging,Javascript,Regex,Firebase Cloud Messaging,我正在尝试检查用户输入的字符串,将其用作使用Firebase云消息发送通知的主题名称 据我所知,主题名称中只允许使用以下字符: 小写字母a到z 大写字母A到Z 数字0至9 字符-.~% 当主题名称包含非法字符时,来自云消息传递的错误消息为 发送通知失败:{错误:提供给sendToTopic()的主题必须是与格式“/topics/[a-zA-Z0-9-.~%+”匹配的字符串 因此,我尝试在JavaScript代码中检查这一点,以防止用户输入非法字符。但我对检查正则表达式的理解显然是错误的,因为
- 小写字母a到z
- 大写字母A到Z
- 数字0至9
- 字符-.~%李>
let sample = "Test Topic Name 20/20"
let trimmedSample = sample.split(' ').join('');
console.log("trimmedSample = " + trimmedSample);
validateString(trimmedSample);
function validateString(inputtxt) {
var letters = /[0-9a-zA-Z]+/;
if (letters.test(inputtxt)) {
console.log("name is Valid");
} else {
console.log("name is Invalid");
}
}
即使主题名称包含无效的“/”字符,检查也会将其验证为有效。事实上,我正在努力寻找它所说的无效字符
如果有人能指出我的错误,我将不胜感激
感谢您当前对字符串的正则表达式检查包含样本。您要做的是确保它与以下内容完全匹配:
var letters = /^[0-9a-zA-Z]+$/;
通过使用
^
和$
可以确保正则表达式必须匹配整个字符串才能成功,而不是在子字符串上成功。Aha…所以我实际上只是检查字符串中的“any”是否有效,而不是“all”是否有效?非常感谢您的帮助。不客气。如果这回答了您的问题,请单击复选标记(✓) 在我答案的左边接受它。这样其他人就知道你得到了(足够的)帮助。另请参见