相关疑难解决方法(0)

如何在JavaScript中使用类似于PHP的preg_match_all()的正则表达式匹配多次出现?

我试图解析是由由两种分离的key = value对的URL编码的字符串&&.

以下内容仅匹配第一次出现,将键和值分解为单独的结果元素:

var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Run Code Online (Sandbox Code Playgroud)

字符串'1111342 = Adam%20Franco&348572 = Bob%20Jones'的结果将是:

['1111342', 'Adam%20Franco']
Run Code Online (Sandbox Code Playgroud)

使用全局标志'g'将匹配所有匹配项,但仅返回完全匹配的子字符串,而不是分离的键和值:

var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Run Code Online (Sandbox Code Playgroud)

字符串'1111342 = Adam%20Franco&348572 = Bob%20Jones'的结果将是:

['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Run Code Online (Sandbox Code Playgroud)

虽然我可以&单独拆分字符串并分别拆分每个键/值对,但有没有办法使用JavaScript的正则表达式支持来匹配模式的多次出现,/(?:&|&)?([^=]+)=([^&]+)/类似于PHP的preg_match_all()函数?

我的目标是通过某种方式获得结果,子匹配分开如下:

[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
Run Code Online (Sandbox Code Playgroud)

要么

[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
Run Code Online (Sandbox Code Playgroud)

javascript regex

157
推荐指数
6
解决办法
23万
查看次数

从咖啡脚中留下`do ... while`循环......?

在CoffeeScript中,while循环是标准的:

while x()
   y()
Run Code Online (Sandbox Code Playgroud)

但是,以下1不起作用:

do
  y()
while x()
Run Code Online (Sandbox Code Playgroud)

对于第一个例子,这只是糖:

y() while x()
Run Code Online (Sandbox Code Playgroud)

CoffeeScript是否带有至少执行一次的内置循环?

1另外,do 一个关键字 - 它用于调用匿名函数.

coffeescript

53
推荐指数
3
解决办法
2万
查看次数

如何在coffeescript中的特定范围内声明变量?

我正在尝试在coffeescript中编写一个使用beforeEach块的茉莉花测试.这遇到了coffeescript的变量范围问题.这是我想写的:

describe 'PhoneDetailCtrl', () ->
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    $browser.xhr.expectGET('phones/xyz.json').respond({name:'phone xyz'})
    ctrl = scope.$new(PhoneDetailCtrl)

    expect(ctrl.phone).toEqualData({})
    $browser.xhr.flush()

    expect(ctrl.phone).toEqualData({name:'phone xyz'})
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为scope$browservar在最里面的范围内声明.也就是说,一旦进入beforeEach,然后又在it块中.我可以通过初始化来强制在正确的范围内声明变量,但这看起来很奇怪:

describe 'PhoneDetailCtrl', () ->
  $browser = {}
  scope = {}
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    ...
Run Code Online (Sandbox Code Playgroud)

这可行,但它编译的JavaScript实际上是

describe('PhoneListCtrl', function() {
  var $browser, …
Run Code Online (Sandbox Code Playgroud)

coffeescript jasmine

38
推荐指数
2
解决办法
2万
查看次数

标签 统计

coffeescript ×2

jasmine ×1

javascript ×1

regex ×1