javascript - 正则表达式匹配字符串格式为 @ 或 # 后跟点分隔的字符串,不包含空格

标签 javascript regex

我正在寻找一个 JavaScript 正则表达式,它匹配以 # 或 @ 开头的字符串,后跟仅包含一个点/句点(句号)且不含空格的字符串。请注意,点的两侧必须有字符,并且字符串可以包含多个 _ 字符。所以,

"@xxxx.yyyyyy" = match
"@x.yyyyy" = match
"a@xxxxx.yy" = fail because first character not @ or #
"@@xxxxx.yy" = fail because it contains 2 @ characters
"@#xxxxx.yy" = fail because it contains 2 @ of the characters @ or # and should contain only 1
"@xxxxx.yy#" = fail same reason
"  @xx yyyyyy" = fail because it contains a space.
"#x_x.y_y" = pass 
"@_._" = fail because no a-z chars are present
"@_.y" = fail because no a-z chars present on left of dot.

我相信这里的用例很常见。我正在寻求确定字符串是否包含对 @aaa_aaa_aaaaa.bb_b_bb 形式的变量的有效引用,其中“a”部分表示查询,“b”部分表示列。 @ 是一个前导触发器,用于指示字符串是变量的意图。 '#' 情况具有相同的一般意图,除了 '#' 表示本地化字符串,其中 'a' 部分是主题,'b' 部分是特定字符串。

我绝不是正则表达式专家,并且在使用在线生成器之前就被捕获了,并且误解了一些细微差别。到目前为止,我已经有了这个,但我正在努力将周期限制为只有一个,而且我不知道如何应用负空白规则。

^(@|#)[a-zA-Z.]*

非常感谢任何帮助。

编辑:

  1. 感谢您指出我应该说“以 # 或 @ 开头”

  2. 点是强制性的。点两侧至少有一个字符。

  3. 出现了进一步的用例: - 点的两侧(一侧或两侧)也可能有多个“_”(下划线)字符。示例:“@aa_aaa_a.bb_bb”。

感谢您的回复 - 我认为所有答案都会有效,但我只能将一个答案标记为正确答案,因此我选择了一个答案,并对其他答案投了赞成票。

最佳答案

这就是您所需要的,它将检查开头是否有 @#,然后匹配 a-zA-Z code> 或 . 字符并继续检查字母。

var test = [
  "@xxxx.yyyyyy",
  "@x.yyyyy",
  "a@xxxxx.yy",
  "@@xxxxx.yy",
  "@#xxxxx.yy",
  "@xxxxx.yy#",
  "   @xx yyyyyy",
];

const regex = new RegExp(/^[@#]([a-zA-Z]|\.)*$/i);

console.log(test.map(entry => `${entry}:  ${regex.test(entry)}`));

关于javascript - 正则表达式匹配字符串格式为 @ 或 # 后跟点分隔的字符串,不包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236802/

相关文章:

字符串文字的 JavaScript 正则表达式?

javascript - 使用 jQuery 在旋转木马中调整 div 的大小

javascript - 如何查看发生的 JavaScript 函数调用

javascript - 在响应表中,第二列值与第一列值重叠

python - 使用文件的 startswith 进行多个匹配

java分隔符错误

javascript - 读取 SkyDrive 文件的内容

Javascript 正则表达式用于验证不带重音字符的名称

javascript - 使用 regExp 不区分大小写的单词边界

javascript - 使用 Javascript Regex 将字符换行到字符串中,不包括链接标签