HarmonyOS鸿蒙Next中这个正则怎么写啊,只能由英文、数字、下划线和减号组成,且必须在6–20位字符之间

HarmonyOS鸿蒙Next中这个正则怎么写啊,只能由英文、数字、下划线和减号组成,且必须在6–20位字符之间 这个正则怎么写啊,只能由英文、数字、下划线和减号组成,且必须在 6–20 位字符之间,求大佬解答

9 回复

你好,可以试试下面的正则:支持英文大小写、数字、_、- 且在6-20位。

const regx = /^[a-zA-Z0-9_\-]{6,20}$/

//测试
const result = regx.test('aaaa')
const result1 = regx.test('aaa55a')
const result2 = regx.test('a;eaaa')
const result3 = regx.test('aafdafdsa0-i=aa')
const result4 = regx.test('aa_-dk3aa')
const result5 = regx.test('aa//deeaa')

更多关于HarmonyOS鸿蒙Next中这个正则怎么写啊,只能由英文、数字、下划线和减号组成,且必须在6–20位字符之间的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


TextArea({ placeholder: '', text: "" })
  .onWillInsert((info: InsertValue) => {
    const regx = /^[a-zA-Z0-9_\-]{6,20}$/
    if (regx.test(String(info.insertValue))) {
      return true
    } else {
      return false
    }
  })

如果你是做输入限制,那不应该这么弄。可以使用inputFilter做限制,设置最大长度20,最小长度在提交时判断。

TextInput({ placeholder: '请输入' })
    .maxLength(20)
    .width(300)
    .height(44)
    .inputFilter('[a-zA-Z0-9_\\-]', (val) => {
    })

感谢大佬,可以了,

正则表达式:^[A-Za-z0-9_-]{6,20}$

关键点解析:

字符范围控制

[A-Za-z0-9_-]表示允许:

英文大小写字母(A-Z, a-z)

数字(0-9)

下划线(_)

减号(-)

长度控制

{6,20}限定字符总数在6到20位之间

边界控制

^和$用于严格匹配整个字符串,避免出现部分匹配的情况

代码示例:

// 校验BundleName中的片段(非完整BundleName)
const reg = /^[A-Za-z0-9_-]{6,20}$/;
console.log(reg.test("Harmony_OS-3"));  // true
console.log(reg.test("123test"));       // true
console.log(reg.test("dev@123"));       // false(包含非法字符@)
console.log(reg.test("abc"));           // false(长度不足)
^[a-zA-Z0-9_-]{6,20}$
  • ^ - 字符串开始
  • [a-zA-Z0-9_-] - 允许:英文字母(大小写)、数字、下划线、减号
  • {6,20} - 长度 6-20 个字符
  • $ - 字符串结束

要匹配由英文(大小写)、数字、下划线和减号组成,且长度在6到20位字符之间的字符串,可以使用以下正则表达式:

正则表达式^[a-zA-Z0-9_-]{6,20}$

说明:

  1. 字符范围
    • [a-zA-Z]:匹配大小写英文字母。
    • 0-9:匹配数字。
    • _-:匹配下划线和减号(减号放在字符类末尾,无需转义)。
  2. 长度限制
    • {6,20}:限制匹配的字符数在6到20位之间(包含6和20)。
  3. 边界匹配
    • ^:匹配字符串开头。
    • $:匹配字符串结尾。
    • 确保整个字符串完全符合规则,没有额外字符。

在HarmonyOS鸿蒙Next中,使用正则表达式匹配6-20位英文、数字、下划线或减号:^[a-zA-Z0-9_-]{6,20}$

在HarmonyOS Next中,你可以使用以下正则表达式来匹配“只能由英文、数字、下划线和减号组成,且长度在6到20位之间”的字符串:

^[a-zA-Z0-9_-]{6,20}$

表达式解析:

  • ^:匹配字符串的开始位置
  • [a-zA-Z0-9_-]:字符集,匹配:
    • a-z:小写英文字母
    • A-Z:大写英文字母
    • 0-9:数字
    • _:下划线
    • -:减号(连字符)
  • {6,20}:限定前面的字符集出现6到20次
  • $:匹配字符串的结束位置

使用示例:

// 在ArkTS中的使用示例
const pattern: string = '^[a-zA-Z0-9_-]{6,20}$';
const regex: RegExp = new RegExp(pattern);

// 测试字符串
const testStr1: string = 'user_123'; // 8位,符合要求
const testStr2: string = 'ab-12';    // 5位,不符合要求
const testStr3: string = 'user@name'; // 包含@,不符合要求

console.log(regex.test(testStr1)); // true
console.log(regex.test(testStr2)); // false
console.log(regex.test(testStr3)); // false

这个正则表达式确保了字符串从开始到结束都只包含允许的字符,并且长度严格控制在6到20个字符之间。

回到顶部